중고마켓 앱에는 인기 모델의 최저가 알림 기능이 있습니다. 판매자가 매물을 올리면 가격표에 가격이 하나 쌓이고, 거래가 성사되면 가장 싼 매물 이 가격표에서 빠집니다.
명령어 목록 commands가 시간 순서대로 주어집니다. 각 명령어는 다음 세 가지 중 하나입니다.
| 명령어 | 의미 |
|---|---|
"등록 P" |
가격이 P원인 매물을 가격표에 추가한다. 같은 가격의 매물이 여러 개 있을 수 있다. |
"조회" |
현재 최저가를 알림으로 보낸다. 가격표는 변하지 않는다. |
"판매" |
현재 최저가 매물 한 개 가 팔린다. 팔린 가격을 알림으로 보내고 그 매물은 가격표에서 사라진다. |
"조회"나 "판매" 시점에 가격표가 비어 있으면 알림 값은 -1이며, 이때 "판매"는 아무 일도 일어나지 않습니다.
알림으로 보낸 값을 보낸 순서대로 담은 배열을 반환하는 solution(commands) 함수를 작성하세요.
알림이 한 번도 발생하지 않으면 빈 배열을 반환합니다.
commands=["등록 15000","등록 9800","조회","판매","조회"] → [9800, 9800, 15000]
등록 15000 → 가격표 {15000}
등록 9800 → 가격표 {9800, 15000}
조회 → 최저가 9800 알림 (가격표 유지)
판매 → 9800 매물 판매 알림 → 가격표 {15000}
조회 → 최저가 15000 알림
commands=["조회","판매","등록 500","조회"] → [-1, -1, 500]
빈 가격표에서의 조회·판매는 -1 알림
commands=["등록 3000","등록 3000","판매","조회","판매","조회"] → [3000, 3000, 3000, -1]
같은 가격 매물이 두 개이므로 판매 후에도 최저가는 3000이다.commands.length ≤ 3,000"등록 P", "조회", "판매" 형태의 문자열이며 그 외 형식은 주어지지 않는다.
"등록 P"는 명령어와 가격이 공백 한 칸으로 구분된다.P ≤ 1,000,000 이며 P는 정수다.[]를 반환한다.시간 복잡도 목표: O(N log N) — 최저가를 매번 다시 훑지 않고, 삽입·최솟값 삭제가 각각 O(log N)인 최소 힙으로 가격표를 관리하세요.
참고: TypeScript에는 내장 우선순위 큐(힙)가 없으므로 배열 기반으로 직접 구현해야 합니다.
▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.