본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 2018번 수들의 합 5

by 현장 2022. 5. 10.

-Code

n = int(input())
cnt, total = 0, 0
start, end = 0, 0
while n >= end >= start:
    if total == n:
        cnt += 1
        end += 1
        total = total - start + end
        start += 1
    elif total > n:
        total -= start
        start += 1
    else:
        end += 1
        total += end

print(cnt)

처음에는 2중 for문으로 작성하여 풀었으나 메모리 오류와 시간 초과가 생겨서 while을 사용해야 한다는 것을 알게 되었습니다. 그래서 작성을 하다가 total값과 n이 같으면 cnt 증가까지만 적어서 입출력이 틀려졌고 total 부분에 start를 빼고 end를 더해줌으로써 해결하는 것을 찾게 되어 해결하였습니다.