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

최동혁·2022년 12월 10일
0

프로그래머스

목록 보기
23/68

풀이 방법

먼저 루프를 돌면서 기준 숫자 하나를 정한다.
길이가 2인 연속되는 숫자의 합을 구하고 set()에 넣는다
길이가 3인 ~
길이가 4인 ~
그렇게 elements의 길이만큼 루프를 돌면서 계속 한개씩 추가시켜주면서 길이가 1,2,3....,len(elements) 의 합들을 계속해서 set()에 넣어준다.

  • 여기서 요지는 기준 숫자를 정해놓고, 길이를 계속 늘려주면서 연속 합을 중복 제거 자료구조인 set()에 넣어주는 것이다.
  • 그리고 원형 수열이기 때문에 인덱스의 합이 범위를 넘어가면 element의 길이만큼 빼줘서 원형 수열인것처럼 동작시켜준다.

풀이 코드

import itertools
def solution(elements):
    answer = set(elements)
    
    for i in range(len(elements)):
        sum_el = elements[i]
        for j in range(1, len(elements)):
            next = i + j
            if next >= len(elements):
                next -= len(elements)
            sum_el += elements[next]
            answer.add(sum_el)
    
    return len(answer)
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글