-
Notifications
You must be signed in to change notification settings - Fork 2
/
2285번 - 우체국.kt
34 lines (27 loc) · 1.1 KB
/
2285번 - 우체국.kt
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
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*
data class Town(val location: Int, val population: Int)
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val n = readLine().toInt()
var rightPopulations = 0L // 탐색하는 곳 기준 오른쪽 마을의 인구수 총합
var leftPopulations = 0L // 탐색하는 곳 포함 왼쪽 마을의 인구수 총합
val towns = Array<Town>(n) {
val st = StringTokenizer(readLine())
val location = st.nextToken().toInt()
val population = st.nextToken().toInt()
Town(location, population).also { town ->
rightPopulations += town.population
}
}
towns.sortWith(compareBy{it.location}) // location 오름차순으로 정렬
towns.forEach { town ->
leftPopulations += town.population
rightPopulations -= town.population
// 인구수가 더 많은 쪽으로 가까이 갈수록 거리 합이 짧아진다
if (leftPopulations >= rightPopulations) {
print(town.location)
return
}
}
}