연속 부분 수열 합의 개수

Ssoony의 Velog·2024년 6월 28일
0

https://school.programmers.co.kr/learn/courses/30/lessons/131701?language=python3

def solution(elements):
    num=len(elements) #수열의 길이를 num 변수에 저장
    elements=elements*2 #수열을 2배로 늘림
    answer=[]
    for n in range(1,num):
        for i in range(0,num):
            answer.append(sum(elements[i:i+n])) #부분 수열의 합을 answer 리스트에 추가
    return len(list(set(answer)))+1 #중복을 제거

이 문제는 원형 수열의 부분합을 구하는 문제이다.

문제는 원형으로 순환하기때문에 문제를 단순하게 풀기위해 수열에 x2를 해줌으로써 순환할 수 있도록 하였다.

처음 수열의 길이를 num이라는 변수에 저장하고,
1부터 num까지 순환하면서 부분 수열의 합을 answer 리스트에 추가해주었다.

마지막으로 list(set())을 활용하여 정답 리스트의 중복을 제거하였다.

profile
개발자로 성장하기 위한 한걸음

0개의 댓글