[백준/BOJ][Python] 2018번 수들의 합 5

Eunding·2024년 10월 25일
0

algorithm

목록 보기
30/107

2018번 수들의 합 5

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


아이디어

투포인터로 start, end를 1부터 시작해서 구간의 합을 구하고 합이 n보다 작으면 end + 1, n보다 크면 start + 1 n이면 정답 카운트 하고 start + 1, end + 1을 해준다


코드

n = int(input())
start, end = 1, 1
answer = 1

while True:
    if start == n: break

    temp = 0
    for j in range(start, end+1):
        temp += j
        if temp >= n:
            break

    if temp == n:
        answer += 1
        start += 1
        end += 1
    elif temp < n:
        end += 1
    else:
        start += 1

print(answer)

이렇게 풀어서 맞았지만 괜찮은 코드를 발견해서 하나 더 추가한다.

n = int(input())
start, end = 1, 1
total = 1
answer = 1

while end != n:
    if total == n:
        answer += 1
        end += 1
        total += end
    elif total > n:
        total -= start
        start += 1
    else:
        end += 1
        total += end
print(answer)

0개의 댓글