Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 배열
- javac
- Queue
- 자료구조
- coding test
- compare()
- HTML
- SQL
- 자바
- Stack
- 코딩테스트
- array
- 우선순위큐
- 정렬
- HashSet
- HashMap
- 스파르타코딩클럽
- 네이버
- hash
- CSS
- point queue
- Java
- Naver
- programmers
- string
- Eclipse
- 해쉬
- Python
- Coding
Archives
- Today
- Total
youngik
힙 (이중우선순위큐) 본문
위 문제를 분석해봤을 때,
1. 명령어는 String 문장의 형태이며 I가 들어왔을 때에는 queue에 삽입 D 1(최댓값 삭제), D -1(최솟값 삭제) 연산
2. return값은 [최대값, 최솟값] 형태이며 queue가 비어있을 때에는 [0,0]으로 출력
3. 빈 queue의 값을 삭제했을 때에는 그 연산을 무시한다.
위 문제를 풀 때 나는 PriorityQueue를 사용했고, 최솟값은 poll()로 자연스럽게 제거가 가능하며
1. max값 출력 2. max값 삭제를 따로 함수로 구현을 해서 사용했다.
처음에는 priorityqueue의 정렬순서를 내림차순으로 하려고 했다가, min값 삭제 or 조회부분에서
다시 순서를 바꾸어주어야 하기 때문에 max값을 차례를 돌면서 찾았다.
max값 출력) -> 빈 temp queue에 값을 하나씩 넣으며 max값 찾기 (*원래 정렬이 되어있다.)
max값 삭제) -> max값 출력과 같이 max값을 return해서 remove()로 삭제
생각해보니 list를 사용하지 않고 array의 크기를 2로 받아서 [최대값, 최소값]으로 구성을 해도 되고
max값을 받아와서 remove()함수로 제거를 해보려고 했는데 이 부분은
max값을 poll()연산을 하면서 받아오다보니, nullpointer에러가 나와서 제대로 된 값을 불러오지 않는다.
아마 max값을 찾을때도 temp에 poll()하고 이런 연산들이 충돌이 되는 것 같다.
'programmers' 카테고리의 다른 글
완전탐색 (소수 찾기) (0) | 2021.04.18 |
---|---|
정렬 (가장 큰 수) (0) | 2021.04.17 |
해시 (베스트앨범) (0) | 2021.04.17 |
힙 (더 맵게) (0) | 2021.04.12 |
해시 (위장) (0) | 2021.04.10 |
Comments