코딩테스트

[프로그래머스] 문자열 묶기

liz_devel 2025. 2. 3. 17:25

🗒 문제


📝 나의 문제풀이


class Solution {
    fun solution(strArr: Array<String>): Int {
       return strArr.groupBy{ it.length }.values.map{ it.size }.maxOrNull()?:0
    }
}

 


📝 다른 사람의 문제 풀이

다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.

class Solution {
    fun solution(strArr: Array<String>) = strArr.groupBy(String::length).values.maxOf(List<String>::size)
}

🖊 문제 풀이 시 알면 좋을 것

groupBy

  • 리스트 또는 배열의 요소들을 특정 기준(Key)으로 그룹화하여 Map을 생성하는 함수.
  • Key → 그룹을 구분하는 기준 (예: 문자열 길이, 첫 글자 등)
  • Value → 해당 Key에 속하는 요소들의 리스트
val grouped = list.groupBy { 기준 }

 

문자열 길이별 그룹화

val words = listOf("a", "bc", "d", "efg", "hi")

val grouped = words.groupBy { it.length }
println(grouped)

출력 결과

{1=[a, d], 2=[bc, hi], 3=[efg]}

 

 

maxOf()

  • 컬렉션(List, Set 등)에서 특정 기준의 최댓값을 찾는 함수.
  • 반환 타입: maxOf()는 람다에서 반환하는 값의 타입을 그대로 반환함
val numbers = listOf(3, 7, 2, 9, 5)
val maxNum: Int = numbers.maxOf { it }
println(maxNum) // 9
반응형