Kotlin 코딩테스트 문법 시리즈 ⑨ : 정렬 (기본, 조건, 다중 기준)

2025. 7. 9. 01:33·Code Odyssey

✅ Kotlin의 컬렉션은 정렬 메서드가 매우 다양합니다. 특히 다중 정렬은 꼭 알야둬야합니다.


🔹 1. 기본 정렬

✅ 배열 정렬 (IntArray, Array 등)

val arr = intArrayOf(3, 1, 2)
arr.sort()         // 오름차순
arr.sortDescending()  // 내림차순
val arr2 = arrayOf(3, 1, 2)
arr2.sort()  // 오름차순 (Comparable 구현 필요)

✅ 리스트 정렬

val list = mutableListOf(3, 1, 2)
list.sort()              // 오름차순 (in-place)
list.sortDescending()    // 내림차순

🔹 2. 컬렉션 정렬 with 정렬 기준

✅ 문자열 리스트 정렬

val list = listOf("banana", "apple", "cherry")
val sorted = list.sortedBy { it }  // ["apple", "banana", "cherry"]
  • sorted() 또는 sortedBy { it } 모두 문자열 사전순 정렬
  • 문자열은 Comparable 구현됨 → 정렬 기준 생략 가능

✅ 대소문자 무시 정렬

val list = listOf("Banana", "apple", "Cherry")
val sorted = list.sortedBy { it.lowercase() }  // ["apple", "Banana", "Cherry"]
  • 혹은 compareToIgnoreCase:
val sorted = list.sortedWith(compareBy(String::compareToIgnoreCase))

✅ sorted/sortedBy: 정렬된 새 리스트 반환

val list = listOf(3, 1, 2)
val sorted = list.sorted()            // [1, 2, 3]
val sortedBy = list.sortedBy { it }   // 같은 결과

✅ 원본 변경: sortBy / sortWith

val list = mutableListOf("bb", "a", "ccc")
list.sortBy { it.length }  // 길이 기준 정렬

🔹 3. 사용자 정의 정렬 (Pair, 데이터 클래스)

✅ Pair 정렬 (2차원 데이터)

val list = mutableListOf(Pair(1, 2), Pair(3, 1), Pair(2, 3))
list.sortWith(compareBy({ it.first }, { it.second }))
  • 첫 번째 원소 오름차순, 같으면 두 번째 원소 오름차순

✅ Pair 정렬 (두 번째 내림차순)

list.sortWith(compareBy<Pair<Int, Int>> { it.first }.thenByDescending { it.second })

✅ 데이터 클래스 정렬

data class Student(val name: String, val score: Int)
val students = mutableListOf(
    Student("Alice", 80),
    Student("Bob", 95),
    Student("Charlie", 70)
)

students.sortBy { it.score }  // 점수 기준 오름차순

🔹 4. Map 정렬

✅ Map → List로 변환 후 정렬

val map = mapOf("a" to 3, "b" to 1, "c" to 2)
val sorted = map.toList().sortedBy { it.second }.toMap()

✅ 요약 정리

구분 함수 설명
배열 정렬 sort(), sortDescending() IntArray 등 원본 정렬
리스트 정렬 sort(), sortBy {} MutableList 정렬 (제자리)
새 정렬 리스트 sorted(), sortedBy {} 불변 List 반환
다중 조건 sortWith(compareBy {..}) Pair, 클래스 정렬 시 유용
Map 정렬 map.toList().sortedBy {} 리스트 변환 후 재생성

다음은 시리즈 ⑩: 고차 함수 정리 (map, filter, any 등) 으로 이어집니다.

'Code Odyssey' 카테고리의 다른 글

Kotlin 코딩테스트 문법 시리즈 ⑪ : 컬렉션 유틸 함수 정리 (zip, chunked, windowed 등)  (4) 2025.07.11
Kotlin 코딩테스트 문법 시리즈 ⑩ : 고차 함수 정리 (map, filter, any 등)  (1) 2025.07.10
Kotlin 코딩테스트 문법 시리즈 ⑧ : 스택 / 큐 / 우선순위 큐 정리  (0) 2025.07.08
Kotlin 코딩테스트 문법 시리즈 ⑦ : 2차원 배열(리스트) 정리  (2) 2025.07.07
Kotlin 코딩테스트 문법 시리즈 ⑥ : Map & Set 정리  (0) 2025.07.06
'Code Odyssey' 카테고리의 다른 글
  • Kotlin 코딩테스트 문법 시리즈 ⑪ : 컬렉션 유틸 함수 정리 (zip, chunked, windowed 등)
  • Kotlin 코딩테스트 문법 시리즈 ⑩ : 고차 함수 정리 (map, filter, any 등)
  • Kotlin 코딩테스트 문법 시리즈 ⑧ : 스택 / 큐 / 우선순위 큐 정리
  • Kotlin 코딩테스트 문법 시리즈 ⑦ : 2차원 배열(리스트) 정리
Celion
Celion
오늘도 평소처럼 화이팅!
  • Celion
    Orion Log
    Celion
  • 전체
    오늘
    어제
    • 전체 글 (144)
      • Uncompiled Thoughts (8)
        • 네이버 부스트캠프 10기 (5)
      • CS 기초부터 한 걸음씩 (34)
      • Code Odyssey (22)
      • Algorithm (77)
        • Coding Test Records (63)
      • Git (3)
      • reference (0)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 태그

    프로그래머스
    Level3
    greedy
    백준
    시뮬레이션
    문법정리
    알고리즘고득점kit
    코테
    Kotlin
    java
    boostcamp
    Level2
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
Celion
Kotlin 코딩테스트 문법 시리즈 ⑨ : 정렬 (기본, 조건, 다중 기준)
상단으로

티스토리툴바