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

2025. 5. 31. 22:41·알고리즘/문제풀이

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

문제

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

문제 분석

조건

명령어 배열에 따라 우선순위 큐에 값을 넣거나 빼는 연산을 하게 된다. 모든 연산이 마쳤을 때 큐에 들어있는 값에서 `[최댓값, 최솟값]`을 출력하는 문제이다. 큐가 비어있다면 `[0, 0]`을 출력한다. 명령어는 아래와 같다.
`I 숫자` ➡️ 숫자를 큐에 삽입
`D 숫자` ➡️ 숫자가 1이면 최댓값, -1이면 최솟값 삭제

풀이방법

자동으로 정렬이 되는 `TreeMap`을 사용하였다. 키값을 기준으로 자동으로 정렬되고 첫 번째 키값이나 마지막 키값을 알 수 있기 때문에 단순 구현으로 문제를 풀 수 있다. 키값을 가져올 때 `TreeMap`이 비어있다면 `NoSuchElementException`이 발생하기 때문에 사이즈를 확인하는 부분만 신경 써주면 된다.

코드

import java.util.*;

class Solution {
    public int[] solution(String[] operations) {
        // 자동으로 정렬이 되는 TreeMap을 사용
        TreeMap<Integer, Integer> treeMap = new TreeMap<>();
        for (String operation : operations) {
            StringTokenizer st = new StringTokenizer(operation);
            String token = st.nextToken();
            int number = Integer.parseInt(st.nextToken());

            if (token.equals("I")) {
                treeMap.put(number, number);
            } else {
                if (treeMap.size() == 0) {  // 트리에 들어있는게 없다면 넘어간다.
                    continue;
                }
                if (number == 1) {
                    treeMap.remove(treeMap.lastKey());
                } else {
                    treeMap.remove(treeMap.firstKey());
                }
            }
        }
        if (treeMap.size() == 0) {
            return new int[]{0, 0};
        }
        return new int[]{treeMap.lastKey(), treeMap.firstKey()};
    }
}

 

TreeMap때문에 날로 먹은 문제 같음.

728x90
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/문제풀이' 카테고리의 다른 글
  • [백준/BOJ] 2206 벽 부수고 이동하기 - JAVA
  • [백준/BOJ] 19236 청소년 상어 - JAVA
  • [프로그래머스] 64064 불량 사용자 - JAVA
  • [백준/BOJ] 9663 N-Queen - JAVA
LIRI
LIRI
  • LIRI
    기록
    LIRI
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • 블로그 꾸미기 (0)
      • Spring (6)
      • React (3)
      • CS (0)
      • 알고리즘 (57)
        • 개념 (2)
        • 문제풀이 (54)
      • Java (1)
      • DB (1)
      • log (4)
        • SSAFY (3)
        • 궁금 (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    도대체왜
    너비우선탐색
    SSAFY
    리액트
    dp
    프로그래머스
    JWT
    최장증가부분수열
    Springsecurity
    lv3
    Java
    LIS
    pccp모의고사
    Spring
    Security
    알고리즘
    LV2
    BFS
    BOJ
    ssafy 합격 후기
    dfs
    불 끄기
    싸피
    springboot
    알고리즘 문제풀이
    SSAFY 9기
    골드1
    비트마스킹
    그리디
    백준
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
LIRI
[프로그래머스] 42628 이중우선순위큐 - JAVA
상단으로

티스토리툴바