반응형
문제
https://www.acmicpc.net/problem/1789
코드
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을 뺀 값을 정답으로 출력하자.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 2644: 촌수계산 (0) | 2023.05.23 |
---|---|
[파이썬, Python] 백준 11931: 수 정렬하기 4 (0) | 2023.05.22 |
[파이썬, Python] 백준 11724: 연결 요소의 개수 (0) | 2023.05.18 |
[파이썬, Python] 백준 1302: 베스트셀러 (0) | 2023.05.17 |
[파이썬, Python] 백준 18258: 큐2 (2) | 2023.05.16 |