문제 설명
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
제한 사항
1 ≤ n ≤ 1,000,000
나의 코드
class Solution {
public int solution(int n) {
int answer = 2;
for(int i=0; i<=n/2; i++) {
if(i*i == n) {
answer = 1;
}
}
return answer;
}
}
다른 사람 코드
class Solution {
public int solution(int n) {
if (n % Math.sqrt(n) == 0) {
return 1;
} else {
return 2;
}
}
}
Math.sqrt()
함수 사용
느낀 점
n의 제곱근이 되려면 최대 n을 2로 나눈 값까지 존재하므로 범위를 i<=n/2
로 잡아주고, 반복문을 돌며 제곱근이 존재한다면 1
을 리턴, 존재하지 않는다면 그대로 2
를 리턴해주며 해결해주었다.
+) 제곱근을 찾으면 break
문을 넣어주어 성능을 향상시키는 게 좋을 듯
다른 사람 코드에서는 제곱근을 구해주는 Math.sqrt()
함수를 사용하여 문제를 해결하였다.
public static double sqrt(double a)
- a의 제곱근을 반환
- 0을 전달하면 0으로 반환