-
https://www.acmicpc.net/problem/7662
7662번: 이중 우선순위 큐
입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%207662
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 큐에 데이터를 삽입 또는 삭제하는 연산을 하고 그 결과를 출력하는 문제다.
처음에 문제를 보고 우선순위 큐 하나를 두고 최댓값 최솟값에 따라 정렬을 해주면 되지 않을까 생각하고
진행했는데 정렬이 안되어서 방법을 바꾸어 이번엔 최댓값 우선순위큐와
최솟값 우선순위큐를 두어서 진행했으나
최대 최솟값은 가져올 수 있으나 큐가 비었는지를 판단하지 못해
결국 구글링을 통해 사람들의 소스를 보다보다 map을 많이들 사용 하늘 걸 보았고
그중에 TreeMap을 이용한 문제풀이를 보게 되었고 TreeMap을 한 번도 사용해본 적이 없어 사용해보았다.
트리맵
TreeMap<integer, integer=""> map = new TreeMap<>(); </integer,>
map.put(key, value) key : 삽입되는 키값, value : 삽입되는 밸류 값
map.getOrDefault(key, defaultValue)
key : 값을 가져와야 하는 요소의 키
defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
map.firstKey() : 젤 처음 키값
map.lastKey() : 젤 마지막 키값
위의 메서드를 이용해서 문제를 해결했고, map에 데이터를 추가할 때
map.put(n, map.getOrDefault(n, 0)+1); 와 같은 방식으로 추가하면 만약 n 키값이 이미 사용됐으면
거기에 해당하는 value 값이 map.getOrDefault(n, 0) 부분에서 반환되고 거기에 +1한 값으로 새로 갱신되며,
만약 해당 키값이 없다면 map.getOrDefault(n, 0) 부분에서 0이 반환되고 거기에 +1한 값이 추가가 된다.
getOrDefault 메서드를 중점으로 위의 메서드를 잘 이용하면 문제를 해결할 수 있다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 18870 좌표 압축 JAVA (0) 2021.11.11 Baekjoon 1697 숨바꼭질 JAVA (0) 2021.11.11 Baekjoon 11279 최대 힙 JAVA (0) 2021.11.10 Baekjoon 1260 DFS와 BFS JAVA (0) 2021.11.10 Baekjoon 2630 색종이 만들기 JAVA (0) 2021.11.10 댓글