문제설명
두 곳의 위치를 입력받고 A에서 B로 이동을 하는데 이동거리는 1이상 이어야하고 한 번 이동할때마다 이동거리를 유지하거나, 1만큼 늘이거나, 1만큼 줄일수 있으며 마지막에는 무조건 1만큼만 이동해서 도착을 해야할 때 최소 몇번 이동해야 하는지를 구하는 문제입니다.
작동 순서
1.두 점을 입력받는다.
2. 두 점 사이의 거리를 distance로 지정한다.
3. 남은 거리가 1부터 현재 이동거리+1까지의 합보다 큰 경우 이동거리를 1만큼 늘리고, 남은 거리가 1부터 현재 이동거리까지의 합보다 작은 경우 이동거리를 1만큼 줄입니다.
4. 한번의 과정이 끝날때마다 count에 1을 더합니다.
5. 모든 과정이 끝나면 이동횟수를 출력합니다.
소스코드
T = int(input())
for i in range(T):
x, y = map(int, input().split())
distance = y-x
move = 0
count = 0
while distance > 0:
if distance >= ((move+1)*(move+2))/2:
move += 1
elif distance < (move*(move+1))/2 and move > 1:
move -= 1
distance -= move
count += 1
print(count)
후기
처음에 문제를 이해하는 데부터 어려움이 있었고 문제를 풀고 나서도 다른 풀이들에 비해서 시간이 오래걸리기는 하지만 처음 골드 문제를 푼데 의미를 두고 싶습니다.