첫번째 코드
처음부터 범위를 지정해가면서 해당 범위의 값을 더해서 맞으면 count에 1을 더하는 형식으로!
import sys
input = sys.stdin.readline
n = int(input())
count = 0
n_list = list(range(1, n+1))
for i in range(n+1):
for j in range(i):
if sum(n_list[j:i]) == n:
count += 1
print(count)
메모리 초과?
두번째 코드
책을 반영하여! 투포인트?
start, end의 투포인트를 통해 sum이라는 변수의 값만 바뀌고 나머지 값은 고려하지 않아버리는 것이다.
import sys
input = sys.stdin.readline
n = int(input())
count = 1
start = 1
end = 1
sum = 1
while end != n:
if sum == n:
count += 1
end += 1
sum += end
elif sum > n:
sum -= start
start += 1
else:
end += 1
sum += end
print(count)
통과!
링크
programmers/백준/Silver/2018. 수들의 합 5 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
008 좋아 (2) | 2024.04.11 |
---|---|
007 주몽 (0) | 2024.04.11 |
005 나머지 합 (0) | 2024.04.08 |
003 구간 합 구하기 4 (0) | 2024.04.04 |
004 구간 합 구하기 5 (0) | 2024.04.04 |