풀이 방법
TreeSet을 이용해서 최댓값, 최솟값을 쉽게 구하고자 했다.
배열에는 각 문제의 난이도를 저장해서 TreeSet에서 제거할 때 사용했다.
내 코드
package com.company;
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 = null;
int N = Integer.parseInt(br.readLine());
int[] arr = new int[100001];
TreeSet<int[]> ts = new TreeSet<>((o1, o2) -> {
if (o1[1] == o2[1])
return o2[0] - o1[0];
return o2[1] - o1[1];
});
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken());
int difficulty = Integer.parseInt(st.nextToken());
ts.add(new int[]{num, difficulty});
arr[num] = difficulty;
}
int M = Integer.parseInt(br.readLine());
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
String s = st.nextToken();
if (s.equals("add")) {
int num = Integer.parseInt(st.nextToken());
int difficulty = Integer.parseInt(st.nextToken());
ts.add(new int[]{num, difficulty});
arr[num] = difficulty;
} else if (s.equals("solved")) {
int num = Integer.parseInt(st.nextToken());
ts.remove(new int[]{num, arr[num]});
arr[num] = 0;
} else {
if (Integer.parseInt(st.nextToken()) == 1) {
System.out.println(ts.first()[0]);
} else {
System.out.println(ts.last()[0]);
}
}
}
}
}
'코딩테스트 > [백준] 코딩테스트 연습' 카테고리의 다른 글
스타트링크 - 5014번 (0) | 2022.02.14 |
---|---|
호텔 - 1106번 (0) | 2022.02.10 |
플로이드 2 - 11780번 (0) | 2022.02.08 |
최소 회의실 개수 - 19598번 (0) | 2022.02.07 |
가장 긴 바이토닉 부분 수열 - 11054번 (0) | 2022.02.07 |