백준 1789번 [수들의 합 | python]
문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
예제 입력 1
200
예제 출력 1
19
1~n까지 더해서 주어진 값보다 크게 되는 n을 찾고, 만약에 주어진 값에서 이 n을 뺀 값이 n보다 작다면 1~n까지의 값중 중복되는 값이 다시 더해져야 한다는 말이기 때문에, 이 (주어진 값) - (1~k까지의 합)이 n보다 작아지는 경우까지 다시 n을 줄여가며 값을 구하였다.
a = input()
n = 0
while True:
if n*(n+1)/2 >= int(a):
break
n+=1
while True:
if int(a) - n*(n+1)/2 > n:
break
n-=1
print(n+1)
Author And Source
이 문제에 관하여(백준 1789번 [수들의 합 | python]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shi3do/백준-1789번-수들의-합-python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)