알고리즘
프로그래머스 - 연속 부분 수열 합의 개수
최데브
2024. 8. 26. 12:25
https://school.programmers.co.kr/learn/courses/30/lessons/131701
문제를 처음부터 잘못 이해하기도 했고, 너무 어렵게 생각했다.
항상 문제를 볼때 어렵게 생각하지 말고 쉬운 생각부터 하나씩 해보자
핵심은
- copyOfRange 로 연속 부분 수열을 만들기
- set 을 이용해서 중복을 제거하기
- 원형이라는 조건이기 때문에 elements 의 두배가 되는 array 를 만들어놓기
class Solution {
fun solution(elements: IntArray): Int {
var answer: Int = 0
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
}
}