그리디/수들의 합

Q·2021년 8월 29일
0

알고리즘/백준

목록 보기
31/70

문제 설명


문제

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?

입력

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

출력

첫째 줄에 자연수 N의 최댓값을 출력한다.


문제링크

전체 코드

s = int(input())

n = 1

while n*(n+1)/2 <= s:
    n += 1

print(n-1)

해결 방법

서로다른 n개의 자연수의 합이 s일때 n의 최댓값을 구하는 알고리즘이다.

최댓값을 구하는 문제이므로 1부터 차례대로 더해 s보다 커지게 되면 그 개수에서 1을 빼면 된다.

n * (n + 1) / 2는 1부터 n까지의 합의 공식이다.

profile
Data Engineer

0개의 댓글