https://www.acmicpc.net/problem/1789
1부터 +1씩 증가한 수를 원하는 수가 되거나 수를 넘게 될 때 까지 계속해서 더해줍니다.
만약 원하는 수가 되면 카운트 횟수를 그대로 출력하면 됩니다.
ex) 원하는 수가 6일 경우
1 + 2 + 3 -> 3개
만약 원하는 수를 초과하게 될 경우 count에서 -1을 해준 값을 출력합니다.
ex) 원하는 수가 4일 경우
1 + 2 + 3 = 6
6에서 2를 빼면 4, 결국 1+3한 경우이고, 답은 2
얼마만큼 초과를 했던지 그 수는 지금까지 더한 숫자 중 하나 일테고, 우린 그 값이 무엇인지 알아갈 필요가 없습니다.
초과한 만큼의 숫자를 빼겠다는 개념으로 count -1을 해주면 되기 때문입니다.
작은 숫자부터 더했으므로 count는 무조건 최대 값이 됩니다.
from sys import stdin
input = stdin.readline
target = int(input())
answer = 0
count = 0
while answer != target:
count += 1
answer += count
if answer > target:
count -= 1
break
print(current)
'Problem Solving > Greedy' 카테고리의 다른 글
백준 1700: 멀티탭 스케줄링 - 그리디 (0) | 2021.08.11 |
---|---|
백준 1439: 뒤집기 - Greedy (0) | 2021.08.11 |
백준 - 1744: 수 묶기 - Greedy (0) | 2021.08.11 |
백준 - 2847: 게임을 만든 동준이 - Greedy (0) | 2021.08.11 |