728x90

🔗 Problem Link

https://www.acmicpc.net/problem/1011


❔Thinking

  • x,y 두 좌표가 주어지면, x에서 y로 가는 최소 이동 횟수를 반환한다.
  • 이전에 k번 이동했다면, 다음은 k-1, k, k+1를 이동할 수 있다.
  • y에 도착하는 이동은 1이어야 한다.

💻Solution

def alpha_centauri(x, y):
    distance = y - x
    move = 0
    step = 1
    total_moved = 0

    while total_moved < distance:
        move += 1
        total_moved += step
        if move % 2 == 0:
            step += 1

    return move

t = int(input())
for _ in range(t):
    x, y = map(int, input().split())
    print(alpha_centauri(x, y))

🗝️keypoint

  1. 최소한으로 이동하기 위해서는 점차 이동 거리를 늘려야 하고, y에 1을 이동하여 도착하기 위해서는 이동 거리를 점차 줄여나가야 한다. (ex - 1, 2, 3, 2, 1)
  2. 같은 거리의 이동이 두 번 반복되고, 가장 큰 이동 거리는 1번 혹은 2번 이다. (ex - 1,2,2,1)

'코딩테스트 > Python' 카테고리의 다른 글

[Baekjoon] 2493. 탑  (0) 2025.01.20
[Programmers] Level 2. 요격 시스템  (0) 2025.01.18
[Programmers] Level 2. 과제 진행하기  (0) 2025.01.16
[Beakjoon] 9663. N-Queen  (0) 2025.01.16
[Programmers] Level 2. 광물 캐기  (0) 2025.01.11

+ Recent posts