반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42628
백준 문제 중 같은 문제가 있다.
https://www.acmicpc.net/problem/7662
import java.util.*;
class Solution {
TreeMap<Integer, Integer> map = new TreeMap<>();
public int[] solution(String[] operations) {
for (String operation : operations) {
String[] arr = operation.split(" ");
String op = arr[0];
int value = Integer.parseInt(arr[1]);
if (op.equals("I")) {
map.put(value, map.getOrDefault(value, 0) + 1);
continue;
}
if (map.isEmpty()) {
continue;
}
int num = value == 1 ? map.lastKey() : map.firstKey();
int returnValue = map.put(num, map.get(num) - 1); // put은 변경 전 값 리턴 함
if (returnValue == 1) {
map.remove(num);
}
}
return map.isEmpty() ? new int[]{0, 0} : new int[]{map.lastKey(), map.firstKey()};
}
}
글 작성해뒀는데 수정한다는게 삭제를 눌러서 다시 쓴다...
TreeMap을 썼다. 트리맵은 값을 넣을 때 정렬을 한다는 특징이 있다.
또 숫자를 넣을 때 맵의 키를 숫자로 하고, 값은 그 숫자를 넣은 횟수를 했다.
코드는 크게 2가지를 유의하면 된다.
1. 맵 선언 시 TreeMap을 써야 한다. 그냥 Map을 쓰면 트리맵의 메서드인 firstKey, lastKey를 못 쓴다.
firstKey 는 가장 낮은 키를 리턴하고, lastKey 는 가장 큰 키를 리턴한다.
2. 맵의 put 메서드의 리턴 값은 변경 전 값이다.
따라서 리턴 값이 1이면, 변경 후는 0이고, 이는 더 이상 숫자가 없다는 뜻이므로 맵에서 삭제를 해주었다.
이후 맵이 비었으면 [0, 0] 을, 아니라면 최대 최소를 리턴하면 된다.
반응형
'알고리즘 🤔' 카테고리의 다른 글
[프로그래머스 자바] 모음사전 (Lv.2) (0) | 2024.05.28 |
---|---|
[백준 자바 8979] 올림픽 (실버5) (0) | 2024.05.26 |
[백준 자바 2669] 직사각형 네개의 합집합의 면적 구하기 (실버5) (0) | 2024.05.24 |
[프로그래머스 자바] 주식가격 (Lv.2) (0) | 2024.05.23 |
[프로그래머스 자바] 다리를 지나는 트럭 (Lv.2) (0) | 2024.05.22 |