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