Algorithm/Beakjoon

[Beakjoon] 백준 1789번 Python

sbs1621 2022. 7. 4. 18:00
Beakjoon 1789, 수들의 합
solved.ac Silver5
Greedy 알고리즘

문제

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

입력

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

출력

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

Solution

n = int(input())

count = 0
cnt = 0
if n == 1:
    print(1)
    exit()
    
for i in range(0,n):
    count += i + 1
    if count > n:
        print(cnt)
        break
    cnt += 1

풀이

1 + 2 + 3 + ... + N을 반복합니다. cnt는 더하는 횟수이며 이는 서로 다른 수가 됩니다. 그리고 count는 cnt번 덧셈 연산을 반복했을 때 서로 다른 수를 모두 더한 값이 됩니다. count가 n을 넘기기 바로 전의 수를 이룰 때 cnt가 최대의 개수를 가진 값이 됩니다.

 

1789번: 수들의 합

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

www.acmicpc.net