[코딩테스트연습] 코딩테스트 입문 > Lv.0 제곱수 판별하기

2024. 3. 21. 10:24코딩 테스트/[프로그래머스] Java

문제 설명

 


문제 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        String num = Integer.parseInt(Math.sqrt(n));
        System.out.println(num);
        return answer;
    }
}

가장 먼저 떠오른 생각은 Math.sqrt()였다. 이를 이용하면 루트를 씌운 기능이기 때문이다.

소수점이 존재하는지 안하는지 보기 위해 문자열로 바꿔서 출력해보고자 하였다.

 

근데 막상 출력하고 보니까 어떻게 처리해야할 지 모르겠는 것이다..!!!!!!!!

그래서 그냥 int로 형변환해서 그걸 다시 제곱한 후 n과 같은지 다른지 보기로 했다.

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        int sqrt = (int)Math.sqrt(n);
        if(n == sqrt*sqrt) answer = 1;
        else answer = 2;
        return answer;
    }
}

2개의 테스트에는 성공했다.

조금 더 깔끔하게 정리해보았다.

class Solution {
    public int solution(int n) {
        int answer = 0;
        int sqrt = (int)Math.sqrt(n);
        answer = (n == sqrt*sqrt) ? 1 : 2;
        return answer;
    }
}

 

다른 사람의 풀이를 보다가,

그냥 n을 sqrt한 값으로 % 연산을 해서 판단할 수도 있었다!

다양한 수학적 아이디어들이 넘쳐났다 오늘도...^.^