https://school.programmers.co.kr/learn/courses/30/lessons/131701
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
첫 풀이
1. 편한 탐색을 위해 배열을 한 번 더 붙여준다
2. 뽑을 길이를 제어해줄 for문을 만든다 ex)길이 1인 부분수열만들지, 2인 부분수열만들지
3. 수열을 추출할 인덱스를 시작할 for문을 만든다 ex) 길이 2인 부분수열 만들 때 [0:2] 할지 [1:3]할지
def solution(elements):
s1 = set()
n=len(elements)
elements=elements+elements
for i in range(1,n+1):
for j in range(n):
s1.add(sum(elements[j:j+i]))
answer=len(s1)
return answer
통과는 하긴했지만 시간과 메모리를 많이 사용한다
더 나은 답안
1. 배열을 늘리지 않고 mod를 사용하면 메모리를 절약할 수 있다
2. 중간에 sum을 저장해두고 하나씩 더해간다
def solution(elements):
n = len(elements)
s1 = set()
for i in range(n):
ssum = elements[i]
s1.add(ssum)
for j in range(i+1, i+n):
ssum += elements[j%n]
s1.add(ssum)
return len(s1)
배운 점
1. 배열을 sum하는것보다 중간에 sum을 저장해두고 하나씩더해가면서 풀면 시간을 줄일 수 있다
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] SQL 문제풀이 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.05.14 |
---|---|
[프로그래머스] MYSQL 문제풀이 - 입양 시각 구하기(1) (0) | 2023.05.13 |
[프로그래머스] 파이썬 문제풀이 - 점프와 순간 이동 (0) | 2023.05.10 |
[프로그래밍] 파이썬 문제풀이 - 베스트앨범 (0) | 2023.05.09 |
[프로그래머스] 파이썬 문제풀이 - 예상 대진표 (0) | 2023.05.09 |
댓글