[백준/JAVA] 11966번 2의 제곱인가?

정은아·2024년 6월 8일

[알고리즘] 수학 모음

목록 보기
107/152
post-thumbnail

문제

내 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main extends Exception {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int num = Integer.parseInt(br.readLine());
        int answer = 3;

        while (true) {
            if (num % 2 != 0) {
                break;
            } else {
                num /= 2;
            }
        }

        if (num == 1){
            answer = 1;
        }else{
            answer = 0;
        }

        sb.append(answer);
        System.out.println(sb.toString());
    }
}

느낀점

주어진 수가 몇인지 모르기 때문에 무한반복을 돌리면서 계속해서 2로 나눈다.
그러면서 2로 나누었을 때 나머지가 1이 아닌 경우 끝낸다.

그 후, if문을 사용해 num이 1이 되면 2의 제곱, 아닌 경우에는 2의 제곱이 아니라고 판별한다.

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글