제곱수 판별하기

nacSeo (낙서)·2024년 4월 18일
0

프로그래머스

목록 보기
148/169

문제 설명

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 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()함수를 사용하여 문제를 해결하였다.

  • Math.sqrt()
public static double sqrt(double a)
- a의 제곱근을 반환
- 0을 전달하면 0으로 반환
profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글