https://www.acmicpc.net/problem/1011
처음 문제를 읽고 계단 오르기랑 비슷한 문제인가? 싶었는데 알고리즘 분류를 보고 전혀 아니라는 걸 알았다.
우선 규칙을 찾기 위해 노가다를 했다.
적다 보니 규칙이 보이기 시작했다.
규칙은 알 것 같은데 식을 도저히 어떻게 세워야 할지 감도 안 와서 저기 나오는 수들을 string으로 하나씩 만들어서 총 문자열 개수를 셀까 싶었다...
이건 좋은 방법이 아닌 것 같아 구글링을 좀 해보니 이런저런 식이 많았는데 그중에 가장 쉬운 식을 찾아냈다.
sqrt(y-x)*2-1
(sqrt(y-x)할 때 소수점 올림 해줘야 한다)
수학적으로 이 식이 어떻게 나오게 되는지는 사실 아직 모른다.. 그냥 규칙을 찾았고, 규칙에 맞는 식을 발견해 낸 거에 만족한다..ㅎ
import math
n = int(input())
for i in range(n) :
x, y = map(int, input().split())
print(math.ceil(math.sqrt(y-x)*2-1))
[백준/파이썬]1068 트리 (0) | 2023.09.01 |
---|---|
[백준/파이썬]2667 단지 번호 붙이기 (0) | 2023.08.29 |
[백준/파이썬]14888 연산자 끼워넣기 (0) | 2023.08.16 |
[백준/파이썬]9935 문자열 폭발 (0) | 2023.08.11 |
[백준/파이썬]16926 배열 돌리기1 (0) | 2023.08.11 |