알고리즘

프로그래머스 - 연속 부분 수열 합의 개수

최데브 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
    }
}
반응형