👇🏻문제 확인하기
백준:2910 - 빈도 정렬
입력으로 받은 수열을 새로운 변수 map
을 선언해서 key값으로 숫자를 저장하고 value값에 나온 횟수를 저장한다.
compatator
을 사용해서 첫번째 정렬 조건인 빈도순으로 정렬한다.
thenBy
를 사용해서 그 다음 정렬 조건인 인덱스순으로 정렬한다.
joinToString()
을 사용해서 배열을 string으로 만들어준다.
fun main(){
readln().split(" ").map { it.toInt()}
val numbers = readln().split(" ").map { it.toInt() }
val map = mutableMapOf<Int,Int>()
numbers.forEach{ map[it] = (map[it]?:0).plus(1) }
val frequencyComparator = compareBy<Int> { map[it] }.reversed()
val indexComparator = frequencyComparator.thenBy{numbers.indexOf(it)}
println(numbers.sortedWith(indexComparator).joinToString(" "))
}
속도가 엄청 빨리 나왔다.. 뿌듯..