Coding Test/programmers

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

파송송 2023. 2. 28. 21:09
728x90

 

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

 

프로그래머스

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

programmers.co.kr


나의 풀이

  • 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합의 가지수가 몇개인가 구하는 문제 

  • [7,9,1,1,4] 배열을 [7,9,1,1,4,7,9,1,1,4] 로 만들어 문제를 해결함
  • list의 sum을 이용해서 합을 구하고 set에 add를 이용해서 원소를 추가함

def solution(elements):
    answer = set()
    el_len = len(elements)
    elements = elements+elements

    for i in range(1,el_len+1):
        for j in range(el_len):
            answer.add(sum(elements[j:j+i]))
    return len(answer)


다른 사람의 풀이

  • list의 sum을 쓰지 않고 나머지 연산을 사용하여 문제를 해결함
  • 오버플로우 값을 %을 이용하여 원래 위치로 돌려보냄
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)

728x90