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
- contentToString
- Developer
- dynamic programming
- 동적계획법
- Kotlin
- lastIndex
- programmers
- foreach
- heap
- Recursion
- PriorityQueue
- Poll
- Util
- report
- hackerrank
- 알고리즘
- Java
- indices
- 2D Array
- sortedBy
- solution
- 프로그래머스
- Queue
- Main
- intarray
- 2020
- GREEDY
- booleanarray
- 코틀린
- dp
Archives
- Today
- Total
Code in
프로그래머스 힙 이중우선순위큐 with Kotlin 본문
프로그래머스의 힙 부분 이중우선순위큐 문제입니다.
IntelliJ에서의 풀이입니다.
import java.util.PriorityQueue
// Kotlin은 JVM: Java Virtual Machine 을 사용하기 때문에 Java에서 import합니다.
val operations: Array<String> = arrayOf("I 7", "I 5", "I -5", "D -1")
// "I 7", "I 5", "I -5", "D -1" // 7, 5
// "I 16", "D 1" // 0, 0
fun solution(operations: Array<String>): IntArray {
var answer = intArrayOf()
val minHeap = PriorityQueue<Int>() // min Heap 생성
val maxHeap = PriorityQueue<Int>(compareByDescending{it})
// max Heap 생성, Descending, 기준은 Int형 요소 = it
operations.forEach { // it은 String
val tmp = it.split(" ")
// tmp는 List<String> 형식으로, 선언과 동시에 초기화.
// split의 delimiters는 " "으로 whiteSpace 공백
when(tmp[0]){ // 첫번째 글자
"I" -> {// I일 경우, min max에 String.toInt()하여 더함
minHeap.add(tmp[1].toInt())
maxHeap.add(tmp[1].toInt())
}
"D" -> { // D일 경우, min max에서 같은 값을 삭제
if (minHeap.isEmpty()) // null이면 no action
else if ( tmp[1].toInt() > 0 )
minHeap.remove(maxHeap.poll())
else
maxHeap.remove(minHeap.poll())
}
}
}
if (minHeap.isEmpty()){ // 1개가 empty면 2개 다 empty
answer += 0
answer += 0
}else{
answer += maxHeap.peek() // 최댓값
answer += minHeap.peek() // 최솟값
}
return answer
}
fun main() {
print(solution(operations).contentToString()) // 0, 0
}
URL: https://programmers.co.kr/learn/courses/30/lessons/42628#qna
'알고리즘 스터디_문제풀이' 카테고리의 다른 글
프로그래머스 완전탐색 소수 찾기 with Kotlin (1) | 2020.08.14 |
---|---|
프로그래머스 완전탐색 모의고사 with Kotlin (1) | 2020.08.13 |
프로그래머스 힙 디스크 컨트롤러 with Kotlin (0) | 2020.08.12 |
프로그래머스 큐 프린터 with Kotlin (0) | 2020.08.11 |
프로그래머스 큐 다리를 지나는 트럭 with Kotlin (0) | 2020.08.11 |
Comments