티스토리 뷰
💻C언어 코드 바로보기
💻JAVA 코드 바로보기
□문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
□제한사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
□입출력 예
n | return |
121 | 144 |
3 | -1 |
🌼C언어 알고리즘
□초기화면
□풀이 과정
처음에는 매개변수 n의 값을 제곱근화 시켰을 때, '그 값이 온전한 정수이면 n은 제곱값이다' 라는 방식으로 풀려 했으나 온전한 정수를 찾는 방법이 꽤나 복잡했다.. 그래서 그냥 (int)로 형변환 했을 때의 제곱근값과 double타입의 제곱근값이 같다면 그 값이 정수라는 뜻이므로 if((int)sqrt(n)==sqrt(n)) 조건문을 사용했다. |
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <math.h>
long long solution(long long n) {
long long answer = 0;
if((int)sqrt(n)==sqrt(n)) answer = pow(sqrt(n)+1,2);
else answer = -1;
return answer;
}
□코드 분석
단계 | 과정 |
변수 | 결과에 따라 (x+1)*(x+1)이나 -1을 저장할 변수 answer |
제곱값 판별 | 어떠한 수의 제곱근값을 봤을 때, 완전한 정수이면 그 값은 제곱근값(x)의 제곱이라는 것을 의미한다. 따라서 sqrt(n)과 (int)sqrt(n)의 값이 같다면 완전한 정수라는 뜻이므로 answer에 x+1의 제곱을 할당하고, 아니라면 -1을 할당한다. |
□채점 결과
🌼JAVA 알고리즘
□초기화면
□설명
뭣모르고 위의 C언어 코드와 동일하게 짰다가 형변환 에러가 발생했다. (double 형을 long형(answer)으로 변환하는 과정에서 값을 잃을 수 있다 ..) 그래서 double to long 메소드를 사용하였다. 🔗 Double to Long |
class Solution {
public long solution(long n) {
long answer = 0;
if((int)Math.sqrt(n)==Math.sqrt(n)) answer = (new Double(Math.pow(Math.sqrt(n)+1,2))).longValue();
else answer = -1;
return answer;
}
}
□코드 분석
단계 | 과정 |
변수 | 결과에 따라 (x+1)*(x+1)이나 -1을 저장할 변수 answer |
제곱값 판별 | 어떠한 수의 제곱근값을 봤을 때, 완전한 정수이면 그 값은 제곱근값(x)의 제곱이라는 것을 의미한다. 따라서 sqrt(n)과 (int)sqrt(n)의 값이 같다면 완전한 정수라는 뜻이므로 answer에 x+1의 제곱을 할당하고, 아니라면 -1을 할당한다. 이때 long형 answer에 double형 결과를 대입하면 형변환 오류가 발생하므로, new Double을 사용한다. |
□채점 결과
□링크
'[코테] > [Programmers Lv1]' 카테고리의 다른 글
[Programmers] Lv1_콜라스 추측 (C/JAVA) (0) | 2021.06.12 |
---|---|
[Programmers] Lv1_평균 구하기 (C/JAVA) (0) | 2021.06.12 |
[Programmers] Lv1_짝수와 홀수 (C/JAVA) (0) | 2021.06.11 |
[Programmers] Lv1_자연수 뒤집어 배열로 만들기 (C/JAVA) (0) | 2021.06.10 |
[Programmers] Lv1_자릿수 더하기 (C/JAVA) (0) | 2021.06.10 |
댓글
공지사항
최근에 올라온 글
TAG
- 배열활용문제
- c언어 기출문제
- cospro기출문제
- YBM
- 구름에듀
- lv1
- C++
- 연습문제
- cospro기출
- 자바
- C
- 구름에듀 기출문제
- 구름 기출문제
- COSPRO 2급
- groomedu
- groom
- 배열
- YBM기출
- Cos Pro
- 알고리즘
- 기출문제
- CosPro
- c언어
- programmers
- 1급
- Java
- 프로그래머스
- lv2
- 코스프로
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함