일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HashSet
- point queue
- 우선순위큐
- programmers
- Java
- SQL
- Python
- 코딩테스트
- 자료구조
- compare()
- CSS
- Coding
- coding test
- HTML
- 프로그래머스
- HashMap
- Eclipse
- 배열
- hash
- javac
- string
- 해쉬
- Naver
- 스파르타코딩클럽
- Queue
- array
- 네이버
- 자바
- 정렬
- Stack
- Today
- Total
목록우선순위큐 (3)
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값 출력) -> ..
처음부터 많이 헤매였던 문제이기도 하고, 도저히 정렬방법에 대해서 생각을 못하다가 간단히 어떻게 정렬을 해야되는지 힌트를 보고나서 쉽게 풀었던 문제였던 것 같다. 처음에 내가 생각했던건 1의자리수부터 비교해서 높은 순서대로 나열을 하고 이후에 동일한 1의 자리수를 가진 값들을 내림차순으로 정렬을 했는데,, (반례 : 300,30,3) 10, 100단위로 떨어지는 수들은 가장 작은 값들이 먼저 와야하기 때문에 만족을 하지 못했다. 그래서 가장 쉬운 방법은 compare() 함수를 이용해서 Integer타입을 String으로 받아온 후에 s1+s2가 큰 지, s2+s1이 큰지 비교해서 정렬하는 것이다. (ex) 3, 40이 있다면 340이 큰지, 403이 큰지) 사실상 위 코드는 다른분의 코드를 가져온 것이..