본문 바로가기
코딩테스트

[프로그래머스] 5명씩

by liz_devel 2025. 1. 17.

🗒 문제

 


📝 나의 문제풀이

class Solution {
    fun solution(names: Array<String>): Array<String> {
        return names.toList().chunked(5).map{it.first()}.toTypedArray()   
    }
}

📝 다른 사람의 문제 풀이

class Solution {
    fun solution(names: Array<String>): Array<String> {
        return names.toList().chunked(5) { it[0] }.toTypedArray()
    }
}

🖊 문제 풀이 시 알면 좋을 것

  • chunked 메소드
    • 설명: 컬렉션을 일정 크기로 나누는 메소드.
    • 반환 타입: List<List<T>>
val groups = listOf(1, 2, 3, 4, 5, 6, 7).chunked(5)
println(groups) // [[1, 2, 3, 4, 5], [6, 7]]

 

 

  • chunked + 람다
    • 설명: chunked는 람다를 받아 각 그룹을 변환하는 작업도 지원.
    • 반환 타입: List<R> (람다 결과의 리스트)
val firstElements = listOf(1, 2, 3, 4, 5, 6, 7).chunked(5) { it.first() }
println(firstElements) // [1, 6]

 

  • first() 메소드
    • 설명: 리스트의 첫 번째 요소를 반환.
    • 반환 타입: 리스트의 요소 타입.
val first = listOf(1, 2, 3).first()
println(first) // 1

 

  • toTypedArray
    • 설명: List<T>를 Array<T>로 변환.
val array = listOf(1, 2, 3).toTypedArray()
println(array.contentToString()) // [1, 2, 3]

 


두 풀이의 차이

  • 나의 풀이:
    • **chunked**로 그룹을 나누고, **map { it.first() }**로 각 그룹의 첫 번째 사람 선택.
names.toList().chunked(5).map { it.first() }.toTypedArray()
  • 다른 사람의 풀이:
    • **chunked**에 람다를 사용해 그룹 나누기와 첫 번째 사람 선택을 동시에 수행
names.toList().chunked(5) { it[0] }.toTypedArray()
반응형