본문 바로가기
Algorithm/Python

[백준 1789번] - 수들의 합

by 호찌민 2023. 2. 8.

[문제]

서로 다른 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