https://www.acmicpc.net/problem/11931
난이도 : 실버 5
태그 : 정렬
설명
그동안의 수 정렬하기가 오름차순 이였다면, 이번엔 내림차순 정렬입니다.
이번엔 조금 특이하게 정렬을 해봤는데요.
PrioryQueue(우선순위 큐)를 사용해 정렬을 해보았습니다.
우선순위 큐는 말 그대로 원소값에 따라 우선순위를 갖는 큐로써,
꽤 자주 사용되는 자료구조 입니다.
우선순위 큐는 원소가 삽입될때 마다 정렬이 되며,
우선순위 큐를 만들 때, 정렬조건을 내림차순으로 주어,
하나씩 원소를 삽입하며, 우선순위 큐가 모두 빌 때 까지 출력하면 됩니다.
소스코드
import java.util.Collections
import java.util.PriorityQueue
fun main() = with(System.`in`.bufferedReader()) {
val n = readLine().toInt()
val pq = PriorityQueue<Int>(Collections.reverseOrder())
repeat(n) {
pq.add(readLine().toInt())
}
val sb = StringBuilder()
while (pq.isNotEmpty()) {
sb.append("${pq.poll()}\n")
}
print(sb)
}
PriortyQueue를 내림차순으로 지정하는 방법은 생성할 때 Collections.reverseOrder()를 넣어주면 됩니다.
후기
해당 문제에서 굳이 우선순위 큐를 사용해 풀어야 할 이유는 없습니다.
버블정렬, 삽입정렬, 퀵소트 같은 정렬 알고리즘 말고 뭔가 신박하게 풀어볼까 하는 생각에,
다른 문제에서 우선순위 큐를 사용해 정렬하여 풀었던 경험이 떠올라 우선순위 큐를 사용해 풀이해보았습니다.
'코딩테스트 > Kotlin' 카테고리의 다른 글
[백준 6603번] [Kotlin] 로또 (0) | 2023.02.04 |
---|---|
[백준 1707번] [Kotlin] 이분 그래프 (0) | 2023.02.03 |
[백준 2751번] [Kotlin] 수 정렬하기 2 (0) | 2023.02.01 |
[백준 24568번] [Kotlin] Cupcake Part (0) | 2023.01.31 |
[백준 2468번] [Kotlin] 안전 영역 (0) | 2023.01.30 |