본문 바로가기
Algorithm

[구현/수학] 백준 1011 Fly me to the Alpha Centauri - Python

by jangThang 2022. 2. 4.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    1011번: Fly me to the Alpha Centauri

    우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     X부터 Y까지의 최소 이동 장치 작동횟수를 구합니다. 이동거리는 1광년부터 시작하며, 그 이후에는 ±1, 0광년만큼 조정이 가능합니다. 단번에 2이상으로 이동거리를 늘리거나 줄일 수 없습니다.

     Y에 도착할 때의 이동거리도 1광년이어야 하며, 이를 만족하기 위해서는 이동거리의 함수가 포물선을 이뤄야 합니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    [ Contents ] 1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하

    star7sss.tistory.com

     물리1에 나오는 포물선의 운동방정식 문제와 일맥상통합니다. 이동거리는 포물선을 이루는 2차 함수이며, 속도는 거리함수를 미분한 1차 함수입니다.

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    T = int(input())
    for i in range(T):
        x, y = map(int, input().split())
        dist = y-x
        cnt = 0
    
        while dist > cnt*(cnt+1):
            cnt += 1
    
        if dist <= cnt**2:
            print(2*cnt-1)
        else:
            print(2*cnt)

     거리(y-x)를 구하고, 이동횟수를 구합니다. 이동횟수는 운동방정식에서 시간(초)으로 여기셔도 됩니다.

     

     

     

    반응형

    댓글