백준|1011번|Fly me to the Alpha Centauri

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
31/136

문제설명
두 곳의 위치를 입력받고 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)

후기
처음에 문제를 이해하는 데부터 어려움이 있었고 문제를 풀고 나서도 다른 풀이들에 비해서 시간이 오래걸리기는 하지만 처음 골드 문제를 푼데 의미를 두고 싶습니다.

profile
INTP 개발자 지망생

0개의 댓글