본문 바로가기
자료구조&알고리즘

[백준] 1181번 : 단어 정렬 (Kotlin)

by JongSeok 2023. 1. 9.
 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

나의 풀이

fun main(args: Array<String>) {
    val n = readLine()!!.toInt()
    val arr = ArrayList<String>()

    repeat(n) {
        val input = readLine()!!.toString()
        arr.add(input)
    }
    // distinct()는 List 반환
    val arr2 = arr.distinct().toTypedArray()

    val result= arr2.sortedWith(Comparator { o1, o2 ->
        when {
            o1.length > o2.length -> { 1 }
            o1.length < o2.length -> { -1 }
            else -> {
                o1.compareTo(o2)
            }
        }
    })
    result.forEach {
        println(it)
    }
}

☞ 중복을 제거한 Array를 준비합니다. 그리고 sortedWith(Comparator{ ... }) 구문을 통해 정렬합니다.

문자열의 length로 먼저 정렬하고, length가 같은 경우 사전순으로 정렬합니다.

 

728x90
반응형