본문 바로가기
코딩테스트

[프로그래머스] 배열 자르기

by liz_devel 2025. 12. 19.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(numbers: IntArray, num1: Int, num2: Int): IntArray {
        var answer = mutableListOf<Int>()
        for(num in num1..num2){
            answer.add(numbers[num])
        }
        return answer.toIntArray()
    }
}

 


📝 다른 사람의 문제 풀이

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

class Solution {
    fun solution(numbers: IntArray, num1: Int, num2: Int) = numbers.sliceArray(num1..num2)
}

🖊 문제 풀이 시 알면 좋을 것

numbers.sliceArray(num1..num2)

이 한 줄에 3가지 개념이 들어 있어.

 

sliceArray() 함수

✔ 역할

  • IntArray에서 원하는 인덱스 범위만 잘라서
  • 새로운 IntArray를 반환
 
val arr = intArrayOf(10, 20, 30, 40, 50)
arr.sliceArray(1..3)
// 결과: [20, 30, 40]

📌 num2 포함 → 이 문제에 딱 맞음


원본 배열은 바뀌지 않는다

numbers.sliceArray(...)

불변
✔ 원본 numbers는 그대로 유지
✔ 새 배열을 만들어 반환

 


🧠 꼭 알아야 할 범위 관련 정리

🔹 sliceArray

  • 끝 포함
  • 범위 객체 (IntRange) 사용
 
sliceArray(1..3)

🔹 copyOfRange (자주 헷갈림)

 
numbers.copyOfRange(1, 4)

 

함수 끝 포함?
sliceArray ✅ 포함
copyOfRange ❌ 미포함

✨ 이 문제에서 기억하면 좋은 한 줄

“배열 자르기 문제 = sliceArray 먼저 떠올려라”

반응형