백준 1789번 [수들의 합 | python]

804 단어 python백준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)
    

좋은 웹페이지 즐겨찾기