서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
첫째 줄에 자연수 N의 최댓값을 출력한다.
풀이
서로 다른 n개의 자연수의 합이 s이면서 n이 최대이기 위해서는 1부터 값을 1씩 키워가며 확인하는 것이 필요하다
단순 구현이지만 1일 때 1을 반환하고 2일 때 1을 반환, 3일 때 2를 반환해야한다는 점에 유의하며 구현해야한다
1부터의 자연수들을 더해나가면서 그 합이 s보다 커지는 경우 그 직전까지의 수들의 개수가 정답이 된다 그리고 s와 같아지는 경우는 현재까지의 개수가 정답이 된다
코드
import sys
s = int(sys.stdin.readline())
cnt = 0
sum_num = 0
i = 1
while True:
if sum_num < s:
cnt += 1
sum_num += i
i += 1
else:
if sum_num == s:
print(cnt)
else:
print(cnt - 1)
break