프로그래머스 입문 [0단계] 제곱수 판별하기 java 풀이

0

알고리즘

목록 보기
1/11
post-custom-banner

github링크

이번에 풀어 볼 문제는 제곱수 판별하기이다.

알고리즘 느낌보다는 뭔가 수학적인 지식이 필요한 느낌... ? 🧐

문제를 한번 봐보자

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i = 0; i <= n; i++){
            if(i * i == n){
                answer = 1;
            }
            
            if(answer != 1){
                answer = 2;
            }
        }
        return answer;
    }
}

설명 및 내가 이해하면서 푼 방법

어떤 자연수를 제곱하였을때 나오는 정수를 제곱수라고 한다

문제는 같은 특정한 수 가 연속해서 서로 곱해졌을때 나오는 수라고 볼 수 있다

음 예를 들어서 12 * 12 = 144 이런식으로 ?

그러므로 나는 for문을 사용하기로 하였다

특정한 수 를 i 로 생각하였다

그러므로 조건을 특정한수 x 특정한수 즉 i x i 로 잡아주었다

for문이 0~n(내가 입력한 자연수) 까지 돌면서 조건을 충족시켜주면 제곱수 아니라면 제곱수가 아닐것이다

만약에 n이 976이라고 해보자

음 900 이상 정도가 나오는 제곱수가 30 부터인데

30 x 30 = 900

31 x 31 = 961

32 x 32 = 1024

976은 절대 제곱수로 나올수 없는 숫자이다

그래서 조건을 아래 추가하였다

if (answer !== 1) {
answer = 2;
}

만약 답이 1이 아닐경우에는 전부 제곱수가 아니기때문에 2를 return 시키도록 조건문을 하나 더 추가하였다.

profile
배운것을 끄적끄적 올리는 개발 블로그
post-custom-banner

0개의 댓글