본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1789 수들의 합

by Alan_Kim 2023. 1. 25.
728x90
반응형

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

 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

 

문제 해결

  • 주어진 S를 1, 2, 3 ... 작은 자연수부터 차례대로 계속 뺀다. S가 음수가 되기 전까지!
  • S에서 더이상 빼면 음수가 될 때 바로 전에 뺀 수를 출력하면 된다. ex) 200의 수를 1부터 빼면 19까지 빼면 10이 남고 20을 빼면 음수가 되므로 19를 출력하면 된다. 이는 18까지 뺀 다음 29를 빼야 200이 되는데 서로다른 N개의 자연수의 합이 200이 될 때 N의 최댓값이 19라는 것이다. 

CODE

import sys
input = sys.stdin.readline
s = int(input())
tmp = 1
while True:
    if s-tmp <0:
        break
    s -= tmp
    tmp += 1
print(tmp-1)
728x90
반응형

댓글