문제 풀이/Baekjoon Online Judge

[python3] 1011번 Fly me to the Alpha Centauri

[잉간] 2019. 4. 18. 23:10


[도착하기 직전의 이동거리는 반드시 1광년] 이 조건을 보지 못해 잠시 헤맸다.

이 조건대로 규칙을 살펴보면 아래와 같은 규칙이 나온다.


순서

최대로 이동하는 수열

최대 이동 횟수

최대 거리

1

 1

1

1

2

 121

3

4

3

 12321

5

9

4

 1234321

7

16

5

 123454321

9

25

N

 123...(N-1)N(N-1)...321

 N * 2 - 1

N^2


먼저 거리 I를 구하기 위해 목표 위치 E에서 현재 위치 S를 뺀다. 

이후 N을 찾기 위해 sqrt()를 사용해 I의 제곱근을 구해 N에 저장한다.

마지막으로 N에 2를 곱한 값을 ceil()을 사용해 올림 하고 1을 빼면 이동 횟수가 나온다.

문제풀이

from math import sqrt,ceil

for T in range(int(input())):
    S, E = map(int,input().split())
    I = E - S
    N = sqrt(I)
    print(ceil(2 * N) - 1)