https://school.programmers.co.kr/learn/courses/30/lessons/131701
첫 접근 방법
## 시간초과 코드
def solution(elements):
lst = []
elen = len(elements)
elements += elements
for i in range(elen):
for j in range(elen):
tmp = 0
for k in range(i, j + i + 1):
tmp += elements[k]
lst.append(tmp)
return len(set(lst))
3중 for문을 이용해 n^3 시간 복잡도가 형성되어 몇 개의 테스트케이스에서 시간초과가 뜨게 되었다.
수정 (elements[i:i+length])이용
# 수정 sum(elements[i:i+length]) 이용
def solution(elements):
elen = len(elements)
elements += elements
sums = set()
for length in range(1, elen + 1):
for i in range(elen):
sums.add(sum(elements[i:i+length])) ## 핵심 (이게되네)
return len(sums)
파이썬 다운 코드인듯하다. set으로 일단 중복을 처리해 주고, i:i+length로 구간 합을 계산해 준다.
728x90
'파이썬알고리즘' 카테고리의 다른 글
의상 (파이썬) (0) | 2024.10.15 |
---|---|
[토스 NEXT] 2022년 코딩테스트 기출문제 파이썬 풀이 (0) | 2024.09.24 |
백준 2108 통계학 (파이썬) (0) | 2024.09.23 |
프로그래머스 귤 고르기 (파이썬) (0) | 2024.09.04 |
백준 2470 두 용액 (파이썬) (1) | 2024.08.28 |