🔍문제

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
2 초 128 MB 31044 12562 10720 42.326%

문제

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

입력

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

출력

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

예제 입력 1 복사

1
200

예제 출력 1 복사

1
19

📝내 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
S = int(input())
sum = 0
i = 1

while True:
    sum += i
    if sum > S:
        print(i-1)
        break
    elif sum == S:
        print(i)
        break    
    i += 1

서로 다른 자연수의 최대 개수를 구하려면 최대한 작은 숫자인 1부터 1씩 더해 가면 될 것이다. 1씩 누적 덧셈을 하다가 목표 값이 초과되는 시점에 현재까지 더한 자연수의 개수에서 -1 을 하면 그 값이 곧 자연수의 최대 개수가 된다.

BOJ 카테고리 내 다른 글 보러가기

댓글남기기