January 29, 2023
1789번: 수들의 합
문제 요약
- 서로 다른 N개의 자연수의 합이 S일 때, 자연수 N의 최댓값 출력
- 1 ≤ S ≤ 4,294,967,295
풀이
S = int(input())
n = 0
k = S
while (2 * (n + 1) < S and S > 0):
n += 1
S -= n
k = S
print(n + (1 if k > 0 else 0))
- 1부터 n까지 더하고 n보다 큰 임의의 값 k를 더했을 때 합이 S가 되게하는 가장 큰 n 값을 출력
- k가 1 이상인 경우 n에 1을 더함
더 나은 풀이
- S를 초과하는 첫 번째 n의 값을 구하고, 1을 뺀다