본문 바로가기

알고리즘

python 백준1789 수들의 합(BOJ1789)

문제링크 : https://www.acmicpc.net/problem/1789

 

1789번: 수들의 합

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

www.acmicpc.net

조금만 생각하면 금방 풀수있었다

s = int(input())

sum = 0
count = 0
num = 1

while True:
  if s == sum:
    break
  sum += num
  num += 1
  count += 1

  if s - sum < num:
    break

print(count)

 근데 너무 조금 생각했다.

수들의 합 공식을 사용하면 훨씬 간단하게 할수 있다

s = int(input())

n = 1

#자연수 합 공식
while (n+1)*n / 2 <= s:
  n += 1  

#반복문 탈출 시 n 은 원하는 값보다 커서 -1 함
print(n - 1)