BOJ 14235 크리스마스 선물
-
변수
int N // 아이들, 거점지 방문 횟수 int A // 입력받는 거점지의 수, if(a==0)이면 아이들을 만나서 출력하는 코드 넣기 PriorityQueue<Integer> present // * 우선순위 큐 사용!
-
구현 로직
-
우선순위 큐를 만든다
-
입력에 따라서 - 아이들을 만나(a==0) 출력
- 거점지를 만나(a!=0) 거점지의 수만큼 선물가치를 입력받기
-
-
코드
package baekjoon.Silver; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Collections; import java.util.PriorityQueue; import java.util.StringTokenizer; public class BOJ_14235_크리스마스선물 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); PriorityQueue<Integer> present = new PriorityQueue<Integer>(Collections.reverseOrder()); StringBuilder sb =new StringBuilder(); for (int tc = 0; tc < N; tc++) { StringTokenizer st = new StringTokenizer(br.readLine()); int A = Integer.parseInt(st.nextToken()); if (A == 0) { // 아이들을 만난 경우, 받은 선물의 가치 출력 if (present.isEmpty()) sb.append(-1).append('\n'); else { sb.append(present.poll()).append('\n'); } } else { // A는 거점지의 수 for (int a = 0; a < A; a++) { int temp = Integer.parseInt(st.nextToken()); present.add(temp); } } } System.out.println(sb.toString()); } }
-
배운점
-
문제에서 주어지는 변수는 대문자로 표기, 내가 쓴 변수는 소문자
-
우선순위 큐를 내림차순 정렬할 때
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(Collections.reversOrder());
- Integer인 경우 Java에서 내부적으로 구현되어 있어!
-
StringBuilder에서 sb와 sb.toString()의 차이
- string으로 활용하려고 하면 toString()을 해주고 그냥 출력만 하면 굳이 toString으로 string으로 바꿔줄 필요 X
- StringBuilder와 String은 다른 타입
-
Leave a comment