728x90
반응형
2024.05.07기준 - 브론즈3
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 각각의 수를 2의 거듭제곱 형태로 나타낼 수 있는지를 확인하는 것입니다.
- 각각의 테스트 케이스에서 수를 읽어들입니다.
- 읽어들인 수 n에 대해 m은 n을 음수로 바꾼 값입니다. (m = n * -1)
- n과 m의 비트 AND 연산을 수행한 결과가 n과 같으면, n을 2의 거듭제곱으로 표현할 수 있다는 것을 의미합니다.
따라서 결과로 1을 출력합니다. - 그렇지 않으면, n을 2의 거듭제곱으로 표현할 수 없으므로 결과로 0을 출력합니다.
비트 연산을 이용하여 2의 거듭제곱 형태로 나타낼 수 있는지를 효율적으로 확인하여 문제를 풀이하였습니다.
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());
while (t-- > 0) {
int n = Integer.parseInt(br.readLine());
int m = n * -1; // n을 음수로 바꾼 값을 m에 저장
if ((n & m) == n) { // n이 2의 거듭제곱 형태로 나타낼 수 있다면
sb.append(1);
} else {
sb.append(0);
}
sb.append("\n");
}
System.out.println(sb);
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 31796번 한빛미디어 (Easy) (0) | 2024.05.07 |
---|---|
BAEKJOON / 백준 - JAVA 31797번 아~파트 아파트 (0) | 2024.05.07 |
BAEKJOON / 백준 - JAVA 31780번 불사조 (0) | 2024.05.02 |
BAEKJOON / 백준 - JAVA 2847번 게임을 만든 동준이 (2) | 2024.05.01 |
BAEKJOON / 백준 - JAVA 2841번 외계인의 기타 연주 (0) | 2024.04.30 |