PS
[백준] 힙, 해시 테이블 (19638, 1927, 14235, 9375)
solanarey
2024. 9. 26. 11:12
자동목차
센티와 마법의 뿅망치(19638)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); // 거인나라 인구 수
int h = Integer.parseInt(st.nextToken()); // 센티의 키
int t = Integer.parseInt(st.nextToken()); // 뿅망치 사용가능 횟수
PriorityQueue<Integer> height = new PriorityQueue<>(Collections.reverseOrder());
int cnt = 0;
for (int i = 0; i < n; i++) height.add(Integer.parseInt(br.readLine()));
while (t-- > 0 && height.peek() >= h) {
int max = height.poll();
if (max == 1) { // 거인의 키가 1이면 우선순위 큐의 가장 마지막 요소 일 것이므로 다시 추가하고 반복을 멈춤
height.add(max);
break;
}
height.add(max / 2);
cnt++;
}
if (height.peek() < h) {
System.out.println("YES");
System.out.println(cnt);
} else {
System.out.println("NO");
System.out.println(height.peek());
}
}
}
| 메모리 | 시간 |
|---|---|
| 28216 | 332 |
최소 힙(1927)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
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());
PriorityQueue<Integer> pq = new PriorityQueue<>();
StringBuilder sb = new StringBuilder();
while (n-- > 0) {
int x = Integer.parseInt(br.readLine());
if (x == 0) {
sb.append(pq.isEmpty() ? 0 : pq.poll()).append("\n");
} else {
pq.add(x);
}
}
System.out.println(sb);
}
}
| 메모리 | 시간 |
|---|---|
| 26232 | 280 |
크리스마스 선물(14235)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
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());
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
StringBuilder sb = new StringBuilder();
StringTokenizer st;
while (n-- > 0) {
st = new StringTokenizer(br.readLine());
int first = Integer.parseInt(st.nextToken());
if (first == 0) {
sb.append(pq.isEmpty() ? -1 : pq.poll()).append("\n");
} else {
while (st.hasMoreTokens()) {
pq.add(Integer.parseInt(st.nextToken()));
}
}
}
System.out.println(sb);
}
}
| 메모리 | 시간 |
|---|---|
| 35584 | 348 |
패션왕 신해빈(9375)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine()), n;
Map<String, Integer> map;
StringBuilder sb = new StringBuilder();
while (t-- > 0) {
n = Integer.parseInt(br.readLine());
map = new HashMap<>();
int res = 1;
while (n-- > 0) {
String input = br.readLine();
int idx = input.indexOf(" ");
String key = input.substring(idx + 1);
map.put(key, map.getOrDefault(key, 0) + 1);
}
for (int val : map.values()) {
res *= (val + 1);
}
sb.append(res - 1).append("\n");
}
System.out.println(sb);
}
}
| 메모리 | 시간 |
|---|---|
| 14404 | 96 |