[문제]
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
[입력]
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
[출력]
첫째 줄에 자연수 N의 최댓값을 출력한다.
[예제 입력]
200
[예제 출력]
19
[내가 생각한 방법]
서로 다른 N개의 자연수 합이 S라고 할 때, 자연수 N이 최대값이 되려면 1부터 1씩 증가하는 등비수열이 성립해야 N의 값이 최대값이 된다고 생각했다.
따라서, 등비수열의 합인 항의 개수*(첫번째 항 + 마지막 항) / 2 식을 활용해서 아래와 같이 풀었다.
[아쉬운 점]
마지막 출력을 N-1 말고 N으로 하고 싶은데 ,,, 일단 생각이 안나서 킵 ... 다음에 디벨롭 해보자
S = int(input())
N = 1
cnt = 1
while cnt*(N+1)/2 <= S:
cnt += 1
N += 1
print(N-1)
'Algorithm > Python' 카테고리의 다른 글
[백준 10809번] - 알파벳 찾기 (0) | 2023.02.20 |
---|---|
[백준 11047번 - 동전0] (0) | 2023.01.25 |
[백준 11399번 - ATM] (0) | 2023.01.24 |
[백준 2720번 - 세탁소 사장 동혁] (0) | 2023.01.24 |
[Python] Optuna 사용법 (0) | 2021.07.07 |