본문 바로가기

코딩테스트/Python

[Python] 백준 #2018 - 수들의 합 5

문제


https://www.acmicpc.net/problem/2018

 

2018번: 수들의 합 5

어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한

www.acmicpc.net

 

 

 

풀이


from collections import deque

n = int(input())

cnt=0
arr = deque([])
for i in range(n,0,-1):
    arr.append(i)
    if sum(arr) == n:
        cnt+=1
    if sum(arr) >= n:
        arr.popleft()

print(cnt)

 

n이 15면 15,14,13,12... 1 이렇게 for문을 돌려준다.

 

더하는 숫자들을 큐에 넣고 기준 숫자보다 크면 가장 큰, 즉 먼저 넣은 숫자를 큐에서 빼준다.

만약 같으면 cnt를 더해준다.