Javadocs

[ Programmers ] Lv.0 제곱수 판별하기(Java) 본문

SelfStudy/Programmers(코딩테스트)

[ Programmers ] Lv.0 제곱수 판별하기(Java)

Javatist 2023. 3. 10. 16:10

https://school.programmers.co.kr/learn/courses/30/lessons/120909

 

[ 문제설명 ]

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다.

정수 n 이 매개변수로 주어질 때, n이 제곱수라면 1을, 아니라면 2를 return하도록 solution 함수를 완성해주세요.

 

[ 제한사항 ]

  • 1 ≤ n ≤ 1,000,000

[ 입출력 예 ]

n result
144 1
976 2

 

[ 입출력 예 설명 ]

입출력 예 #1

  • 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.

입출력 예 #2

  • 976은 제곱수가 아닙니다. 따라서 2를 return합니다.
class Solution {
    public static int solution(int n) {
        int answer = 0;
        int cnt = 0;	// 약수의 개수
        
        for (int i = 1; i <= n; i++ ) {
        	if (n % i == 0) {       // 약수를 판별
        		cnt++;              // 약수에 해당하면 cnt를 계속 더해준다.
        	}
        	if (cnt % 2 == 0 ) {    // 약수의 개수가 짝수라면 제곱수가 아님
        		answer = 2;
        	} else {
        		answer = 1;
        	}
        }
        return answer;
    }
}

 [ 설명 ]

주어진 수를 1부터 반복문을 실행하여 약수의 개수(cnt)를 구해준다.

구한 약수의 개수 cnt를 짝수 / 홀수를 판단하여 준다. (짝수인 경우 - 제곱수가 아님, 홀수인 경우 - 제곱수에 해당) 

Comments