[BOJ: 2018] - Python / 파이썬 - 수들의 합

o_jooon_·2일 전
0

BOJ

목록 보기
49/49
post-thumbnail

문제

시간 복잡도

  • 최대 n만큼의 반복 -> O(n)O(n)

문제 접근법

  1. 시작과 끝 숫자를 나타낼 두 변수를 정의한다.(초기엔 모두 0)
  2. 시작부터 끝까지의 합을 나타낼 변수를 정의한다.
  3. 끝 숫자가 n에 다다를 때 까지 다음과 같은 과정을 반복한다.
    3-1. 총 합이 n보다 작다면, 끝 숫자를 1 증가시키고 합에 더한다.
    3-2. 총 합이 n보다 크다면, 시작 숫자를 합에서 빼고 시작 숫자를 1 증가시킨다.
    3-3. 총 합이 n과 같다면, 카운트를 1 증가시키고 끝 숫자도 1 증가시킨다.

코드

# BOJ
# S5 - 2018(수들의 합 5)

import sys
input = sys.stdin.readline

n = int(input())
l, r = 0, 0
total = 0
ans = 0

while r <= n:
    if total < n:
        r += 1
        total += r
    elif total > n:
        total -= l
        l += 1
    else:
        ans += 1
        r += 1
        total += r

print(ans)
profile
안녕하세요.

0개의 댓글