문제 바로가기 : https://www.acmicpc.net/problem/23757
메모리 : 35372KB
시간 : 504 ms
언어 : Java 11
코드
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));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
PriorityQueue<Integer> box = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < N; i++) {
box.add(Integer.parseInt(st.nextToken()));
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < M; i++) {
int now = box.poll();
int want = Integer.parseInt(st.nextToken());
if (now < want) {
System.out.println(0);
return;
}
box.add(now - want);
}
System.out.println(1);
}
}
풀이
우선순위 큐를 이용하는 간단한 문제.
"현재 선물이 가장 많이 담겨있는 상자" 라는 말은 선물을 뽑을 때 마다, 즉 상자 속 선물의 개수가 줄어들때마다 재정렬을 해서 선물이 가장 많이 담겨있는 상자를 찾으라는 말이다. 우선순위 큐를 이용해 실시간으로 상자를 재정렬하며 해당 상자에서 선물을 다 가져가 수 있는지만 확인해주면 된다.
'Algorithm' 카테고리의 다른 글
[Algo] 백준 20913 최애의 팀원 (0) | 2024.07.30 |
---|---|
[Algo] 백준 5052 전화번호 목록 JAVA (0) | 2024.07.26 |
[Algo] 백준 14585 사수빈탕 JAVA (0) | 2024.06.16 |
[Algo] 백준 2872 우리집엔 도서관이 있어 (0) | 2024.06.10 |
[Algo] 백준 14627 파닭파닭 JAVA (0) | 2024.06.08 |