🧫 문제 분석
✔️ 출처
📖 문제

비트 마스킹 문제인데 바른 방식으로 풀었다.
시간차는 비트마스킹이랑 4ms 차이정도 났다.
비트마스킹 제대로 공부해야겠다.
🔅 문제 풀이
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(64);
int bar = 0;
int x = Integer.parseInt(br.readLine());
while (!pq.isEmpty() && x < 64) {
int left = pq.poll();
int right = left / 2;
bar += right;
if (bar == x){
pq.add(right);
break;
}
if (bar >= x) {
bar -= right;
pq.add(right);
}else {
pq.add(right);
pq.add(right);
}
}
bw.write(pq.size() + "");
bw.flush();
bw.close();
}
}
사실 밑처럼 풀면된다..
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int x = Integer.parseInt(br.readLine());
int count = Integer.bitCount(x);
bw.write(count+ "");
bw.flush();
bw.close();
}
}
❗ 오답노트 / 필요한 지식
- 비트 마스킹에 대해서 공부할 필요를 느꼈다. 할게 너무많다...
'baekjoon' 카테고리의 다른 글
백준 2448번 : 별 찍기 - 11 자바 (1) | 2024.09.13 |
---|---|
백준 12891번 : DNA 비밀번호 자바 (0) | 2024.09.13 |
백준 1030번 : 프렉탈 평면 자바 (3) | 2024.09.05 |
백준 2447번 : 별 찍기 - 10 자바 (0) | 2024.09.04 |
백준 1004번 : 어린 왕자 자바 (1) | 2024.08.27 |