반응형
풀이
- 해당 문제는 막대를 가지고 장난치는 문제인데
- 계속해서 남은 막대 중
- 짧은 막대를 절반으로 자르는 문제이기에
- 간단히 우선순위 큐를 사용해서 문제를 풀고자 했음
- 그리고 계속해서 배열의 모든 값을 더하는 건
- 비효율 적이라 판단하여 조기 길이인 64에서
- 조건에 따라 계속해서 차감하는 것으로 현재 길이를 간단히 파악하고자 함
- 이에 따라 길이가 맞춰졌다면 while문을 탈출하고
- 현재 배열의 개수를 출력 후 해결
import java.util.*;
public class _1094 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int X = sc.nextInt();
int hap = 64;
Queue<Integer> li = new PriorityQueue<>(Arrays.asList(64));
while (hap!=X) {
int now = li.poll();
if (hap-now/2>=X) hap-=now/2;
else li.add(now/2);
li.add(now/2);
}
System.out.println(li.size());
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 17626번] Four Squares (0) | 2024.12.05 |
---|---|
[백준, 자바, 9375번] 패션왕 신해빈 (0) | 2024.12.05 |
[백준, 자바, 1268번] 임시 반장 정하기 (0) | 2024.11.27 |
[백준, 자바, 11286번] 절댓값 힙 (0) | 2024.11.25 |
[백준, 자바, 1992번] 쿼드트리 (0) | 2024.11.25 |