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

이정연·2023년 9월 5일
0

CodingTest

목록 보기
161/165
post-thumbnail

문제 링크

풀이

투포인터를 사용하여 풀었다.

left <= right인 경우는 구간합을 그대로 정답에 추가해주고

left > right인 경우는 총합-구간합(=left~right 합)을 정답에 추가해준다.

최종 집합의 길이를 리턴하면 정답!

코드

def solution(elements):
    answer = set()
    length = len(elements)
    for i in range(length):
        left,right = (i,i)
        for j in range(length):
            if left <= right:
                answer.add(sum(elements[left:right+1]))
            else:
                answer.add(sum(elements)-sum(elements[right+1:left]))
            right += 1
            right %= length
    return len(answer)
profile
0x68656C6C6F21

0개의 댓글