https://www.acmicpc.net/problem/1789
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
첫째 줄에 자연수 N의 최댓값을 출력한다.
N개의 자연수 합이 최댓값이 되려면 1부터 2, 3, 4...까지 차례대로 더해준다.
1부터 n까지 더한 누적합이 s보다 커지게 되면, 커지기 직전의 가장 마지막에 더해준 자연수가 최댓값이 된다.
예를 들어 s=20이면,
1+2+3+4+5+6=21>20(커짐),
1+2+3+4+5=15<20(커지기 전) -> 최댓값은 5가 된다.
s = input() # 자연수 합 s 입력
sum = 0 # 누적합 담을 변수 sum 0으로 초기화
add = 1 # 1부터 더해주기 위해 add는 1로 초기화
while (1): # 조건에 맞을 때까지 무한 반복
sum += add # sum에 add를 더해줌
if (int(sum) > int(s)): # sum이 s보다 커지게 되면
print(add-1) # 커지기 전의 add 값 출력
break
add += 1 # add를 +1 해줌
s를 입력받고, sum과 add의 초깃값을 각각 0과 1로 설정해준다.
무한반복문으로 sum에 add를 더해주고 add는 +1씩 해주는데, 만약 sum이 s보다 커지게 되면, 커지기 전의 값 add-1을 출력한다.
이 정도 난이도까진 혼자 풀 수 있다! 좋아~~!!😆