[백준] 1789 수들의 합

J. Hwang·2024년 9월 26일
0

coding test

목록 보기
26/108

문제

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


입력

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


출력

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


내 풀이

input1 = int(input())

intsum = 0
i = 0
while True:
    i += 1
    intsum += i
    if intsum > input1:   
        break

print(i-1)

코멘트

서로 다른 자연수가 최대한 많이 더해져서 어떤 수가 되려면 당연히 1부터 계속 더해나가야 할 것이다.
예시의 200을 보면 1 + 2 + ... + 19 + 20 = 210 이 되는데, 이는 즉 1부터 오름차순으로 20개의 숫자를 더하면 210이 되니까 여기서 자연수 하나 (10) 만 빼면 200 이 됨을 알 수 있다. 즉, 20 - 1 = 19개의 서로 다른 자연수가 더해지는 경우가 최대의 N 값을 내면서 200이 되는 것이다.


References

https://www.acmicpc.net/problem/1789

profile
Let it code

0개의 댓글