728x90
https://www.acmicpc.net/problem/1789
풀이는 다음과 같다. 예시로는 200을 들겠다!
200 = 1 + 199이다.
199 = 2 + 197이다. (이미 1을 위에서 써버렸으므로 수를 1증가시키면서 사용)
197= 3 + 194이다.
...
계속하다보면 수가 계속 줄어들어서
45 = 18 + 27 까지 오게 되고
27 = 19 + 9가 되면서 뭔가 이상한 순간이 생긴다. 9는 아까 써버렸는데 또 9가 나온다.
27을 더이상 쪼갤 수 없으므로, 200은 1~18 그리고 27까지해서 총 19개의 자연수로 나눌 수 있다!
즉, 200을 덧셈으로 쪼개나가면서 어느 순간 쪼개진 값이 1씩 증가하는 i 변수보다 작아지는 순간 종료하고 i값을 출력하면 된다.
input = __import__('sys').stdin.readline
sum = int(input())
i = 1
while True:
sum = sum - i
if sum <= i:
break
i+=1
print(i)
728x90
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/파이썬] 11650번 좌표 정렬하기 (0) | 2022.10.21 |
---|---|
[백준/파이썬] 10815번 숫자 카드 (0) | 2022.10.10 |
[백준/Python] 2163번 초콜릿 자르기 (0) | 2022.10.06 |
[백준/Python] 2588번 곱셈 (0) | 2022.10.03 |
[백준/C++] 1826번 연료 채우기 (0) | 2022.10.02 |