개발 연습장/백준 문제풀이

[파이썬, Python] 백준 1789: 수들의 합

LooanCheong 2023. 5. 19. 11:17
반응형

문제

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

 

1789번: 수들의 합

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

www.acmicpc.net

코드

n = int(input())
cnt = 0
res = 0

while True:
    cnt += 1
    res += cnt
    if res > n:
        break
        
print(cnt - 1)

설명

문제를 이해하는데 애를 먹었다.

서로 다른 N개의 자연수의 합이 S라고 한다 = 최대한 많은 자연수를 이용해서 만들 수 있어야 한다.
이렇게 이해를 하면 조금 더 쉽지 않을까 싶다.

예를 들어 S가 10이라면 1,2,3,4를 사용해서 만들 수 있다.
S가 11이라면 역시 1,2,3,4 만을 이용해서 만들 수 있다.
S가 15가 된다면 1,2,3,4,5를 사용해서 만들 수 있다.

즉, 지금까지 더한 수의 합이 목표값을 초과한다면 그 이전의 수가 정답이 된다.

따라서 반복문을 진행하며 수를 하나씩 늘려주고,
cnt도 하나씩 늘려주어 더해진 수의 개수를 체크해 준다.

이후 목푯값을 초과하게 된다면 cnt에서 1을 뺀 값을 정답으로 출력하자.

반응형