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

Kim Yongbin·2023년 9월 4일
0

코딩테스트

목록 보기
32/162

Problem

Solution

내 풀이

def solution(elements):
    element_length = len(elements)
    sum_list = []

    for i in range(element_length):
        for j in range(i, i + element_length):
            if j >= element_length:
                sum_list.append(sum(elements[i % element_length:]) + sum(elements[:j % element_length]))

            else:
                sum_list.append(sum(elements[i % element_length: j % element_length]))

    return len(list(set(sum_list)))

브루트 포스를 이용하여 원순열 예외처리를 해주었다.

시작 점을 기준으로 주어진 원소들의 길이까지 늘려가면서 합을 구하였다.

다른 사람 풀이

def solution(elements):
    ll = len(elements)
    res = set()

    for i in range(ll):
        ssum = elements[i]
        res.add(ssum)
        for j in range(i+1, i+ll):
            ssum += elements[j%ll]
            res.add(ssum)
    return len(res)

시작 점을 기준으로 길이별로 잘라서 그 합을 구하는 것이 아닌, 하나씩 더해가면서 그 합을 넣어 주었다.

Reference

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

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글