프로그래머스 연속 부분 수열 합의 개수 풀이 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()