https://www.acmicpc.net/problem/1933
요즘 우리학교에서 되게 핫한 문제이다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.*
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
data class building(val x:Int, val h:Int){
}
fun main()=with(br){
val n = readLine()!!.toInt()
val build_up = PriorityQueue<building>{ d1,d2 ->
if(d1.x == d2.x){
d2.h - d1.h
}
else{
d1.x - d2.x
}
}
for(i in 0 until n){
var line = readLine()!!.split(" ").map{it.toInt()}
build_up.add(building(line[0],line[1]))
build_up.add(building(line[2],-line[1]))
}
// println(build_up)
// [building(x=1, h=11), building(x=3, h=13), building(x=2, h=6), building(x=7, h=-6), building(x=5, h=-11), building(x=9, h=-13), building(x=12, h=7), building(x=16, h=-7), building(x=14, h=3), building(x=25, h=-3), building(x=19, h=18), building(x=22, h=-18), building(x=23, h=13), building(x=29, h=-13), building(x=24, h=4), building(x=28, h=-4)]
// PQ는 print된 것과 poll 한 것의 순서가 다르다.
val tr = TreeMap<Int,Int>(kotlin.Comparator { o1, o2 ->
o2 - o1
})
val ans = mutableListOf<building>()
while(!build_up.isEmpty()){
var cur = build_up.poll()
if(cur.h>0){
tr[cur.h] = tr.getOrDefault(cur.h, 0) + 1
// tr이라는 treemap의 key가 cur.h 이 존재할 경우에는 key의 value를 ,
// 없을 경우에는 default 값을 넣는다. (이경우에는 0이 들어간다.)
}
else{
var key = -cur.h
var x = tr[key]
if(x==1){
tr.remove(key)
}
else{
tr[key]=tr[key]!!-1
}
}
if (tr.size == 0) {
ans.add(building(cur.x, 0));
}
else{
ans.add(building(cur.x,tr.firstKey()))
}
}
bw.write("${ans[0].x} ${ans[0].h} ")
var prev = ans[0].h
for(i in 1 until ans.size){
if(prev!=ans[i].h){
bw.write("${ans[i].x} ${ans[i].h} ")
prev = ans[i].h
}
}
bw.flush()
bw.close()
}
|
cs |
'알고리즘 공부 > hashmap , 자료구조' 카테고리의 다른 글
백준 1991 트리 순회 with Kotlin (0) | 2021.08.28 |
---|---|
백준 9663번 with Kotlin (0) | 2021.08.23 |
백준 11403번 with Kotlin (0) | 2021.08.20 |
PQ도 자신에 입맛에맞게 순서를 지정가능 (0) | 2021.08.19 |
백준11286번 with Kotlin (0) | 2021.08.16 |