본문 바로가기

코딩테스트/Python

[Python] 백준 #1789 - 수들의 합

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

 

1789번: 수들의 합

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

www.acmicpc.net

 

내 코드

N = int(input())

i=1
sol=0
isSolve = False

while True:
    if N<i:
        isSolve = True
        break 
    if isSolve: break    
    N-=i
    i+=1
    sol+=1
    

print(sol)

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값을 구하는 문제이다. 최댓값을 구해야하므로 가장 작은 1부터 차례로 더해가야지 최대를 구할 수 있을 것 같아 이렇게 풀었다.

 

입력받은 N에 1부터 차례로 빼준다. 1부터 숫자가 1씩 커져야하니 변수 i로 두었다. N에 i를 계속 빼다가 N보다 i가 더 커지는 순간에 더할 수 있는 더 작은 숫자가 없는 것이기 때문에 이때 답을 구해주었다.  

 

 

 

다른사람의 코드

s = int(input())
n = 1
while n * (n + 1) / 2 <= s:
    n += 1
print(n - 1)

등차수열로도 풀수있다!