본문 바로가기
코딩테스트

[프로그래머스] 2차원으로 만들기

by liz_devel 2025. 12. 22.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(num_list: IntArray, n: Int): Array<IntArray> {
       return num_list.toList().chunked(n).map{ it.toIntArray() }.toTypedArray()
    }
}

🖊 문제 풀이 시 알면 좋을 것

 

toList()

개념/정의

  • 배열(Array 또는 IntArray)을 List로 변환하는 함수

사용 시점/용도

  • 배열에서는 지원하지 않는 chunked 같은 List 전용 함수를 쓰고 싶을 때 사용

반환값

  • 원본 배열의 요소를 담은 새로운 List<T> 반환
val arr = intArrayOf(1, 2, 3)
val list = arr.toList()
println(list) // [1, 2, 3]

 

chunked(size: Int)

개념/정의

  • 리스트를 지정된 크기(size)만큼 잘라서 서브 리스트의 리스트로 만드는 함수

사용 시점/용도

  • 리스트를 일정 크기 단위로 나누고 싶을 때 사용
    • 배열에서는 toList()로 변환한 후 chunked를 사용하고, 리스트에서는 바로 사용 가능
  • 예: 1차원 배열을 2차원 배열로 변환할 때

반환값

  • List<List<T>> 타입, 각 서브 리스트의 크기는 size이며 마지막은 남은 개수만큼
val list = listOf(1, 2, 3, 4, 5)
val chunks = list.chunked(2)
println(chunks) // [[1, 2], [3, 4], [5]]

 

map { it.toIntArray() }

개념/정의

  • 리스트(List<Int>)의 각 요소를 다른 타입으로 변환하는 함수
  • 여기서는 서브 리스트 List<Int> → 배열 IntArray 변환

사용 시점/용도

  • chunked로 나눈 리스트들을 배열 형태로 바꿔 최종 2차원 배열을 만들고 싶을 때

반환값

  • 변환된 요소들을 담은 새로운 리스트 반환
val chunks = listOf(listOf(1, 2), listOf(3, 4))
val arrays = chunks.map { it.toIntArray() }
println(arrays.map { it.toList() }) // [[1, 2], [3, 4]]

주의: toIntArray()는 List<Int> → IntArray 변환

 

toTypedArray()

개념/정의

  • List<IntArray> → Array<IntArray> 로 변환하는 함수
  • 즉, Kotlin의 리스트를 배열로 바꾸고 싶을 때 사용

사용 시점/용도

  • 반환 타입이 배열(Array<...>)이어야 할 때 사용

반환값

  • 타입이 지정된 새로운 배열
val listOfArrays = listOf(intArrayOf(1, 2), intArrayOf(3, 4))
val array2D = listOfArrays.toTypedArray()
println(array2D.map { it.toList() }) // [[1, 2], [3, 4]]

 

 

전체 과정 예시

val numList = intArrayOf(1, 2, 3, 4, 5, 6)
val n = 2

val result = numList.toList()               // [1, 2, 3, 4, 5, 6]
                .chunked(n)                // [[1, 2], [3, 4], [5, 6]]
                .map { it.toIntArray() }   // [IntArray(1,2), IntArray(3,4), IntArray(5,6)]
                .toTypedArray()            // Array<IntArray>

println(result.map { it.toList() })         // [[1, 2], [3, 4], [5, 6]]
반응형