문제링크 🚩
https://school.programmers.co.kr/learn/courses/30/lessons/42628
📕 문제 접근 📕
- 값을 최대 값과 최소 값을 제거해야한다.
- 들어갈 때 정렬이 되어서 들어가야한다
- 이 두가지 특성을 고려했을 때 TreeMap을 이용하여 문제를 해결하면 될 것 같다는 생각이 들었다
💻 Code 💻
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
TreeMap<Integer, Integer> tree = new TreeMap<>();
int num = 0;
int cnt = 0;
for (String operation : operations) {
String[] temp = operation.split(" ");
char command = temp[0].charAt(0);
num = Integer.parseInt(temp[1]);
if (command == 'I') {
tree.put(num,cnt++);
} else {
if (num == 1) {
tree.pollLastEntry(); // 최대값 제거
} else if (num == -1) {
tree.pollFirstEntry(); // 최소값 제거
}
}
}
int min = 0;
int max = 0;
if (!tree.isEmpty()) {
max = tree.firstKey(); // 최대값
min = tree.lastKey(); // 최소값
}
int answer[] = {min, max};
return answer;
}
}
📖 배운점 📖
아래 개념을 공부 후 해당 문제를 다시 풀어봤다 .
레드 블랙 트리 TreeMap에 대해 자세히 알 수 있었다.
https://security-gom.tistory.com/29
'JAVA > Algo 풀이' 카테고리의 다른 글
[프로그래머스] 야근지수 - JAVA (0) | 2023.08.01 |
---|---|
[프로그래머스] 110 옮기기 - Java (0) | 2023.08.01 |
[프로그래머스] 이중우선순위큐 (0) | 2023.07.25 |
[백준] 5676.음주코딩 - 세그먼트 트리 (JAVA) (2) | 2023.07.16 |
[백준] 2268.수들의 합 7 - 세그먼트트리(JAVA) (0) | 2023.07.15 |