[백준] 수들의 합

jihan kong·2022년 3월 10일
0

코테 알고리즘

목록 보기
6/7
post-thumbnail

※ 본 문제는 백준 온라인 저지 사이트에서 발췌하였습니다.

문제

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

입력

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

출력

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

예제 입력 1

200

예제 출력 1

19



>> 나의 풀이

# baekjoon
# 1789 수들의 합

s = int(input())

sum = 0
i = 1

while sum <= s:
    i += 1
    sum += i
    if sum >= s:
        i -= 1
        break
print(i)

후기

처음에 문제를 이해를 못해서 좀 헤맸다. 그런데 이해하고 나니까 문제가 쉬워졌다. 어떤 수를 만들든 간에 서로 다른 N개를 더해서 어떤 수를 만들려면 1부터 차례대로 더해야 가장 최대로 수를 사용해서 더한것이 된다.

(ex. 10 = 1+2+3+4 => 4개 사용
10 = 1+4+5 => 3개 밖에 사용하지 못함)

따라서 수를 차례로 더하고 하나씩 더한 카운트를 표현하는 i를 print하면 된다. 대신 마지막에 더한 값은 input값을 넘어가게 되므로 마지막 값을 제외하기 위해 i-1을 해준다.

profile
학습하며 도전하는 것을 즐기는 개발자

0개의 댓글