프로그래머스 연속 부분 수열 합의 개수 풀이 Kotlin | Level2
문제
주어진 배열의 연속된 부분 수열을 만들고 이들의 중복되지 않는 합의 갯수를 구하는 문제이다.
배열의 자르기 및 Set 이 필요하다.
접근
- 주어진 배열의 2배 사이즈가 되는 새로운 배열 만들기 (연속된 수열 만들기 용이해짐)
 - 배열의 copyOfRange() 사용하여 부분수열 만들기
 - 중복이 없는 합의 갯수 구하기
 
풀이
fun solution(elements: IntArray): Int {
    val newArr = IntArray(elements.size * 2) { 0 }
    for (i in newArr.indices) {
        newArr[i] = elements[i % elements.size]
    }
    val set = mutableSetOf<Int>()
    for (i in 1..elements.size) {
        for (j in 0..elements.size) {
            set.add(newArr.copyOfRange(j, j+i).sum())
        }
    }
    return set.size
}
결론
- 중복이 없는 콜렉션 처리는 Set
 - 주어진 배열에서 하위 배열을 만드는 함수는 copyOfRange()