알고리즘
[백준][KOTLIN] 18870 좌표 압축
금님은님아부지
2021. 12. 8. 09:05
728x90
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
풀이
- 좌표를 입력 받는다. 이때 입력 받은 좌표를 정렬할 좌표를 하나 더 선언한다.
- 정렬된 좌표를 이용하여 좌표 압축 조건을 저장하는 Map Data 를 선언한다.
- 저장된 Map Data 를 출력 한다.
코드
import java.io.*
import java.util.*
fun main(args: Array<String>) {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = br.readLine().toInt() // 개수 입력 받기
val input = mutableListOf<Int>()
val compress = mutableListOf<Int>()
val resultMap = mutableMapOf<Int, Int>()
br.readLine().split(" ")
.map {
input.add(it.toInt()) // 입력된 숫자 저장
compress.add(it.toInt()) // 입력된 숫자를 정렬한 리스트
}
Collections.sort(compress)
var count = 0
for (i in 0 until compress.size) {
if (resultMap[compress[i]] == null) {
resultMap[compress[i]] = count++
}
}
for (i in 0 until n) {
bw.write("${resultMap[input[i]]} ")
}
bw.flush()
bw.close()
br.close()
}
728x90