좌표 압축 성공
시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초 | 512 MB | 11808 | 5456 | 4082 | 44.941% |
문제
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.
Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.
X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.
입력
첫째 줄에 N이 주어진다.
둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.
출력
첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.
제한
- 1 ≤ N ≤ 1,000,000
- -109 ≤ Xi ≤ 109
예제 입력 1 복사
5 2 4 -10 4 -9
예제 출력 1 복사
2 3 0 3 1
예제 입력 2 복사
6 1000 999 1000 999 1000 999
예제 출력 2 복사
1 0 1 0 1 0
출처
- 문제를 만든 사람: baekjoon
알고리즘 분류
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 | import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.lang.Math.pow import java.lang.NumberFormatException import kotlin.math.abs import kotlin.math.pow import kotlin.math.sqrt val br = BufferedReader(InputStreamReader(System.`in`)) val n = br.readLine()!!.toInt() fun main()=with(br){ val bw = BufferedWriter(OutputStreamWriter(System.out)) var hash = HashMap<Int,Int>() val list = readLine()!!.split(" ").map{it.toInt()} for(i in 0 until n){ hash[list[i]]=0 } var gogo = hash.toList().sortedBy { it.first }.toMutableList() for(i in 0 until gogo.size){ gogo[i]=Pair(gogo[i].first,i) } var hash2 = gogo.toMap() for(i in 0 until n){ bw.write("${hash2[list[i]]} ") } bw.flush() bw.close() } | cs |
'알고리즘 공부 > hashmap , 자료구조' 카테고리의 다른 글
백준 5430번 With Kotlin (0) | 2021.08.14 |
---|---|
백준 7662 with Kotlin #treemap (0) | 2021.08.12 |
백준 11279번 with Kotlin (0) | 2021.08.12 |
백준 1927번 with Kotlin (0) | 2021.08.06 |
백준 1620번 with Kotlin # hash 맵 과 list 동시에 사용 (0) | 2021.08.02 |