[백준/Python] 1789 - 수들의 합

고운·2024년 4월 1일

알고리즘

목록 보기
74/94

문제

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

입력

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

출력

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


풀이
서로 다른 n개의 자연수의 합이 s이면서 n이 최대이기 위해서는 1부터 값을 1씩 키워가며 확인하는 것이 필요하다
단순 구현이지만 1일 때 1을 반환하고 2일 때 1을 반환, 3일 때 2를 반환해야한다는 점에 유의하며 구현해야한다
1부터의 자연수들을 더해나가면서 그 합이 s보다 커지는 경우 그 직전까지의 수들의 개수가 정답이 된다 그리고 s와 같아지는 경우는 현재까지의 개수가 정답이 된다

코드

import sys

s = int(sys.stdin.readline())

cnt = 0
sum_num = 0
i = 1
while True:
    if sum_num < s:
        cnt += 1
        sum_num += i
        i += 1
    else:
        if sum_num == s:
            print(cnt)
        else:
            print(cnt - 1)
        break
profile
무럭무럭 성장하는 개린이 공부 공간

0개의 댓글