[프로그래머스] 이중우선순위큐 - TreeMap

문제링크 🚩

https://school.programmers.co.kr/learn/courses/30/lessons/42628

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

📕 문제 접근 📕

  • 값을 최대 값과 최소 값을 제거해야한다.
  • 들어갈 때 정렬이 되어서 들어가야한다
  • 이 두가지 특성을 고려했을 때 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

 

TreeMap - Red-Black Tree

TreeMap이란? TreeMap은 이진 트리를 기반으로 한 MAP의 컬렉션이다 기존의 TreeSet과의 차이는 값만 저장하는 것이 키와 값이 저장될 수 있는 Map, Etnry를 저장하는 것이다. TreeMap에 객체를 저장하면 자

security-gom.tistory.com