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