문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
어떤 유리를 쪼개는 상황을 상상해보면, 쪼개지는 조각의 개수가 가장 많을려면, 각각의 조각이 작아야 한다. 이를 이 문제에 대입해보면 서로 다른 N개의 자연수 각각이 최소한 작아야지 N이 최대가 될 수 있다.
서로 다른 N개의 자연수들을 최소한으로 만들기 위해서는 1부터 시작하여 1씩 증가하는 수들로 구성해야 한다.
따라서 이 문제는 1부터 N까지 합이 S보다 작은 N의 최대값을 구하는 문제이다.
s = int(input())
index = 1 # N의 역할을 한다.
sum = 1 # 1부터 N까지의 합이다.
while sum<=s:
index += 1
sum += index
print(index-1)
# while문 조건이 sum<=3이므로,
# 이미 최대값 index가 정해지더라도 반복이 한 번 더 실행된다.
# 따라서 -1로 최대값 index를 출력한다.