Algorithm/프로그래머스

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

potato_pizza 2024. 6. 18. 16:03
728x90

연속 부분 수열의 합의 개수

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

 

프로그래머스

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

programmers.co.kr

 

문제

코드

  • 시간 초과
def solution(elements):
    answer = []
    new_elements = elements * 2
    for i in range(len(elements)):
        for j in range(len(elements)):
            sum_result = sum(new_elements[j:j+i+1])
            if sum_result not in answer:
                answer.append(sum_result)
            else:
                pass


    return len(answer)
  • 원 형태이기 때문에 리스트를 2개를 이어 붙여서 계산하하도록 만들어줌
  • 2개의 for문을 사용, j:j+i+1
  • set 자료형을 사용해서 시간 초과 해결
  • set: 중복 허용 X
def solution(elements):
    answer = set()
    new_elements = elements * 2
    for i in range(len(elements)):
        for j in range(len(elements)):
            sum_result = sum(new_elements[j:j+i+1])
            answer.add(sum_result)


    return len(answer)
728x90
반응형