728x90
반응형

문제

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

 

1789번: 수들의 합

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

www.acmicpc.net

 

문제 접근

일단 그리디로 접근했다. 

1부터 순서대로 더해가면서 입력값보다 큰 수가 나오는 경우에서 count -1 을 출력하면 된다.

즉, 11을 입력했을 때 

1+2+3+4+5 = 15 이고 15에서 4라는 자연수를 빼면 11이 된다.

 

코드

s= int(input())

count = 0
total = 0
for i in range(1,s):
    count+=1
    total += i
    if total > s:
        count -= 1
        break
if s == 1 or s== 2:
    count = 1

print(count)

 

배운점

예외 찾는 부분에서 애먹었다. 입력값을 200으로 잡고 total을 다 출력을 해봤는데 틀린게 없었다.

1이나 소수인 경우에 좀 예외인 경우가 종종 있으니 앞으로 주의하자! 이 경우에는 1과 2일 때 예외여서 처리를 해주었다!

 

728x90
반응형

+ Recent posts