본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#344 백준 파이썬 [2018] 수들의 합 5 - 투포인터

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