«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Recent Posts
Tags more
Today
Total
관리 메뉴

내 인생은 개발 중

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

Algorithm/프로그래머스

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

seul.e 2024. 5. 30. 22:00

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

 

프로그래머스

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

programmers.co.kr

 

 

처음 풀이

def solution(elements):
    answer = 0
    sum_list = set(elements)
    n = len(elements)

    for i in range(n):
        for length in range(1, n + 1):
            if i + length > n:
                temp = sum(elements[i : n]) + sum(elements[:(i + length) % n])
            else:
                temp = sum(elements[i : i + length])
            sum_list.add(temp)

    return len(sum_list)

 

나중 풀이

def solution(elements):
    n = len(elements)
    sum_list = set()

    for i in range(n):
        temp = elements[i]
        sum_list.add(temp)
        for j in range(i + 1, i + n):
            temp += elements[j % n]
            sum_list.add(temp)

    return len(sum_list)

 

처음에는 슬라이싱을 이용하여 풀어서 시간이 많이 걸렸었다.
그래서 다른 풀이를 보고 슬라이싱을 하는 것이 아닌 for 문을 돌면서 바로 더해주는 방식으로 풀어주니 훨씬 시간이 더 짧게 걸릴 수 있었다.

 

 

 

역시 똑똑한 사람들 너무 많아,, 나도 열심히 해야지!

Comments