https://www.acmicpc.net/problem/11966
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println(twoN(N) ? 1 : 0);
}
public static boolean twoN(int n) {
return (n & (n - 1)) == 0;
}
/*
2의 n제곱수 판별
2의 n제곱수를 2진수로 나타내면 1로 시작하고 오른쪽에 0으로 채워지는 형태
여기서 1을 뺀 수를 2진수로 나타내면 0 제곱을 제외하고 2진수가 자리수가 하나 적고 1로만 이루어짐
따라서 여기서 둘을 비트연산자 & 연산하면 2의 제곱수 인 경우 0이 나와야 한다.
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 4458 첫 글자를 대문자로 (0) | 2022.12.07 |
---|---|
백준 10178 할로윈의 사탕 (0) | 2022.12.07 |
백준 11023 더하기 3 (0) | 2022.12.07 |
백준 3059 등장하지 않는 문자의 합 (0) | 2022.12.07 |
백준 1247 부호 (0) | 2022.12.07 |