rueki

BOJ 2018. 수들의 합 5 (투 포인터) 본문

python

BOJ 2018. 수들의 합 5 (투 포인터)

륵기 2022. 10. 4. 01:21
728x90
반응형

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

 

2018번: 수들의 합 5

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

www.acmicpc.net

1 ~ 15의 숫자에서 숫자의 합이 15가 되는 경우 count 하는 문제

- 시작 포인터와 끝 포인터를 여기서 첫 점에 설정

- 합이 15가 되는 경우 count ++, 끝 포인터는 한 칸 뒤로 보낸다.(이미 끝 포인터를 뒤로 보내면서 숫자들을 더했기 때문)

   ex) 1 + 2 + 3 + 4 + 5 는 15, sp = 1, ep = 5를 가리킨다

   ex) 1 + 6 + 7 + 8 의 경우 15를 초과, 초과하는 경우에는 앞으 숫자부터 뺀다. 즉 sp를 뒤로 미룬다

         7 + 8이 15가 되기때문에 count ++

 

n = int(input())

cnt = 1

s, e = 1, 1
total = 1

while e != n:
    if total == n:
        cnt += 1
        e += 1
        total += e
    elif total > n:
        total -= s
        s += 1    
    else:
        e += 1
        total += e
        
print(cnt)
728x90
반응형

'python' 카테고리의 다른 글

BOJ 17298. 오큰수 (Stack)  (0) 2022.10.05
BOJ 1940. 주몽 (투 포인터)  (1) 2022.10.04
BOJ 3190. 뱀 (시뮬레이션)  (1) 2022.10.03
BOJ 1251. 단어나누기(구현, Greedy)  (0) 2022.10.03
BOJ 1713. 후보 추천하기(구현)  (0) 2022.10.03
Comments