[프로그래머스] 배열 만들기 3

devel_liz·2025년 1월 15일
0

코딩테스트

목록 보기
41/45

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(arr: IntArray, intervals: Array<IntArray>): IntArray {
     val result = mutableListOf<Int>()
        for ((first, second) in intervals) {
            result.addAll(arr.sliceArray(first..second).toList()) 
        }
        return result.toIntArray()
    }
}

📝 다른 사람의 문제 풀이

class Solution {
    fun solution(arr: IntArray, intervals: Array<IntArray>): List<Int> {
        return intervals.flatMap { ints -> arr.sliceArray(IntRange(ints[0], ints[1])).toList() }
    }
}

🖊 문제 풀이 시 알면 좋을 것

  • flatMap

    • flatMap은 컬렉션의 각 요소를 처리한 결과를 하나의 리스트로 합쳐주는 함수입니다. 각 요소에 대해 매핑된 결과를 평평하게(flatten) 만들어 줍니다.
      val nestedList = listOf(listOf(1, 2), listOf(3, 4))
      val flatList = nestedList.flatMap { it }
      println(flatList) // 출력: [1, 2, 3, 4]
  • sliceArray

    • sliceArray는 주어진 인덱스 범위나 인덱스 리스트에 해당하는 배열의 부분 배열을 반환합니다.
      val arr = intArrayOf(1, 2, 3, 4, 5)
      val sliced = arr.sliceArray(1..3) // [2, 3, 4]
      println(sliced.joinToString()) // 출력: 2, 3, 4
  • IntRange(start, endInclusive)

    • ntRange는 정수 범위를 표현하는 클래스입니다. start..end와 같이 범위를 생성하며, step 값을 추가해 범위를 커스터마이즈할 수도 있습니다.

    • 포함 범위: IntRange는 start부터 endInclusive까지 포함합니다. 즉, 끝값(endInclusive)도 범위에 포함됩니다.

    • 표현식: 1..5는 IntRange(1, 5)와 동일한 표현입니다

    • 사용 용도: 배열이나 리스트의 일부를 처리하거나 루프 범위를 지정할 때 자주 사용됩니다.

      val range = IntRange(1, 5)
      println(range.toList()) // 출력: [1, 2, 3, 4, 5]
      
      for (i in IntRange(3, 7)) {
        println(i) // 출력: 3, 4, 5, 6, 7
      }
profile
Android zizon

0개의 댓글

관련 채용 정보