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

JSK·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
학사지만 AI하고 싶어요...

0개의 댓글

Powered by GraphCDN, the GraphQL CDN