코딩테스트/프로그래머스

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

박소민 2024. 6. 20. 11:34
연속 부분 수열 합의 개수
 

프로그래머스

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

programmers.co.kr

 

 

  • 내 풀이
    • 바로 len(set) 해도 됨
from collections import deque
def solution(elements):
    
    result=set(elements)
    
    for i in range(1,len(elements)):
        queue=deque([], i+1)
        for j in range(-i,i+1):
            queue.append(elements[j])
            result.add(sum(queue))
    
    return len(result)

 

 

  • 다른 사람 풀이
    • 시간 10배 단축
    • 원형 함수 -> j번째 수에서 % n 을 하면 n이하의 인덱스 값으로 나오므로 다시 돌아갈 수 있음
      • i-1번째 인덱스 -> (i+n) % n로 표현할 수 있음
def solution(elements):
    n = len(elements)
    result = set()

    for i in range(n):
        tmp = elements[i]
        result.add(tmp)
        for j in range(i+1, i+n):
            tmp += elements[j%n]
            result.add(tmp)
    return len(result)