동캄의 코딩도장

프로그래머스 level2 [연속 부분 수열 합의 개수] 파이썬 본문

코테/프로그래머스

프로그래머스 level2 [연속 부분 수열 합의 개수] 파이썬

동 캄 2023. 4. 5. 17:11

https://school.programmers.co.kr/learn/courses/30/lessons/131701

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

# 프로그래머스 level2 연속 부분 수열 합의 개수
from collections import deque
def solution(elements):
    answer = 0
    sets=set()
    for length in range(1,len(elements)+1):
        l=[]
        s=0
        for i in range(-(length),0):
            s+=elements[i]
            l.append(elements[i])
        sets.add(s)
        for i in range(len(elements)):
            sub_=l.pop(0)
            s-=sub_
            s+=elements[i]
            sets.add(s)
            l.append(elements[i])
    answer=len(sets)
    return answer

set을 이용하여 경우의 수를 저장하였다.

N개의 연속합의 시작점을 l[-N]으로 설정하고, 끝은 len(elements)로 설정하여 부분 합들을 구하였다.