반응형
05-14 05:47
Today
Total
«   2024/05   »
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
관리 메뉴

개발하는 고라니

[백준] 1181번 : 단어 정렬 본문

Programming/백준

[백준] 1181번 : 단어 정렬

조용한고라니 2022. 2. 1. 01:35
반응형
 

1181번: 단어 정렬

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

www.acmicpc.net

 

[요구사항]

  • 중복 제거
  • 단어 길이 작은 순서대로 정렬
  • 길이가 같다면 철자 순으로 정렬

</> Code - [Kotlin]

fun main() {

    /* read/write 가능한 List 선언 */
    val list = mutableListOf<String>()

    /* readln()은 console 입력 */
    for (i in 1..readln().toInt())
        list.add(readln())

    /**
    * distinct() -> 중복제거
    * sortedWith() -> Comparator를 이용해 정렬, 정렬 기준을 커스터마이징 할 수 있다.
    * compareBy<> { it.length } -> 문자열 길이 기준 정렬 (default ASC)
    * it는 item의 약자인 듯 하다. java에서는 내 맘대로 지정해서 썻는데,, kotlin에서는 it로 통일 해야하나보다.
    * thenBy { it } -> 문자열 길이 기준 정렬 후, 철자 순 정렬
    */
    list.distinct()
        .sortedWith(
            compareBy<String> { it.length }
            .thenBy { it }
        )
        .forEach { println(it) }
}
반응형
Comments