Problem Solving/Greedy
백준 1789: 수들의 합 - 그리디
메인이요
2021. 8. 18. 15:54
https://www.acmicpc.net/problem/1789
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
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)