※ 본 문제는 백준 온라인 저지 사이트에서 발췌하였습니다.
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
첫째 줄에 자연수 N의 최댓값을 출력한다.
200
19
# baekjoon
# 1789 수들의 합
s = int(input())
sum = 0
i = 1
while sum <= s:
i += 1
sum += i
if sum >= s:
i -= 1
break
print(i)
처음에 문제를 이해를 못해서 좀 헤맸다. 그런데 이해하고 나니까 문제가 쉬워졌다. 어떤 수를 만들든 간에 서로 다른 N개를 더해서 어떤 수를 만들려면 1부터 차례대로 더해야 가장 최대로 수를 사용해서 더한것이 된다.
(ex. 10 = 1+2+3+4 => 4개 사용
10 = 1+4+5 => 3개 밖에 사용하지 못함)
따라서 수를 차례로 더하고 하나씩 더한 카운트를 표현하는 i를 print하면 된다. 대신 마지막에 더한 값은 input값을 넘어가게 되므로 마지막 값을 제외하기 위해 i-1을 해준다.