본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 1789번 수들의 합(with python)

by 윤무무 2023. 1. 21.

https://www.acmicpc.net/problem/1789

 

1789번: 수들의 합

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

www.acmicpc.net

 

1. 내가 작성한 코드
n = int(input()) #자연수의 합
sum = 0

for i in range(1,n+1):
   sum += i
   if sum == n:
    print(i)
    break
   elif sum > n:
     print(i-1)
     break

 

range의 범위를 1부터 n까지로 잡고 풀었더니 97%에서 계속 오류가 났다😥

 

왜 그럴까 고민을 해보니 n이 '1 or 2'일경우 출력이 되는 조건이 없던 것,,

 

수정해서 맞긴 했는데, 우리가 아는 공식을 이용하는 아주 수ㅣ운 풀이가 있었다.

 

2. 다른 풀이
s = int(input())
n = 1
while n* (n+1) / 2 <= s:
  n+=1
print(n-1)
등차수열의 합 공식을 이용한 n* (n+1) / 2 을 이용하면 된다!

댓글