baekjoon
백준 1094번 : 막대기 자바
Meluu_
2024. 9. 7. 20:43
🧫 문제 분석
✔️ 출처
📖 문제

비트 마스킹 문제인데 바른 방식으로 풀었다.
시간차는 비트마스킹이랑 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();
}
}
❗ 오답노트 / 필요한 지식
- 비트 마스킹에 대해서 공부할 필요를 느꼈다. 할게 너무많다...