문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
문제 파악
서로 다른 N개의 자연수를 합하여 S를 만들 때, 최대한의 N 값을 찾기 위해서는
1부터 시작하여 차례로 자연수들을 더하다가 S보다 커지는 지점을 찾으면 된다.
그 지점 직전에 위치한 수가 곧 S를 구성할 수 있는 최대한의 갯수일 것이다.
예를 들어, S = 200일 때
sum(1:19) = 190이고 sum(1:20) = 210이다.
곧 N은 19인 것이다.
1부터 18까지 합해주고 나머지 200에서 모자른 부분만큼을 19번 째 수로서 더해주면 된다.
(1 + 2 + 3 + ... + 18) + 29
s = int(input())
n = 0
i = 1
while True:
n += i
if n > s:
print(i-1)
break
else:
i += 1
'Algorithm > Greedy' 카테고리의 다른 글
[백준] 1439. 뒤집기 / 파이썬(python) (0) | 2022.05.24 |
---|---|
[백준] 1715. 카드 정렬하기 / 파이썬(python) (0) | 2022.05.02 |
[백준] 10610. 30 / 파이썬(python) (0) | 2022.04.23 |
[백준] 10162 전자레인지 (python) (0) | 2022.04.21 |
[백준] 2217 로프 (python) (0) | 2022.04.20 |