https://www.acmicpc.net/problem/2018
SOLUTION
투포인터 알고리즘을 통해 풀이하였다. (https://claude-u.tistory.com/393 참조)
차이점은 포인터 자체가 리스트 상 위치가 아니라
들어가는 숫자 자체이기에 리스트를 구성할 필요가 없다는 것 정도이다.
PYTHON CODE
N = int(input())
start = 0 #첫 숫자
end = 1 #끝 숫자
answer = 0 #정답
sum_numbers = 1 #답이 되는 숫자
while start < N//2 + 1:
if sum_numbers < N: #작을 경우 뒤에 숫자 하나를 더붙여줌
end += 1
sum_numbers += end
elif sum_numbers == N: #맞을 경우 숫자 answer += 1
answer += 1
end += 1
sum_numbers -= start
sum_numbers += end
start += 1
else: #클 경우 앞에 숫자 하나를 없애줌
sum_numbers -= start
start += 1
print(answer + 1) #자기 자신 + 1
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#346 백준 파이썬 [14624] 전북대학교 (0) | 2020.01.09 |
---|---|
#345 백준 파이썬 [2490] 윷놀이 (0) | 2020.01.09 |
#343 백준 파이썬 [1644] 소수의 연속합 - 투포인터 (0) | 2020.01.09 |
#342 백준 파이썬 [1806] 부분합 - 투포인터 (0) | 2020.01.09 |
#341 백준 파이썬 [2003] 수들의 합 2 (0) | 2020.01.08 |