본문 바로가기
Algorithm/Baekjoon

1011. Fly me to the Alpha Centauri (Python)

by 원만사 2022. 4. 5.
반응형
 

1011번: Fly me to the Alpha Centauri

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

www.acmicpc.net

 

 

풀이

 간단한 규칙을 찾아서 적용하면 된다. 

 

 위의 그림을 보면 규칙을 찾을 수 있다. 4번 작동했을 때 최대로 움직일 수 있는 거리는 6이고, 5번 작동했을 때 최대로 움직일 수 있는 거리는 9이다. 그렇기 때문에 만약 입력으로 주어진 x와 y의 거리가 7~9일 경우에는 최소 5번의 공간이동 장치 작동으로 이동할 수 있음을 알 수 있다.

 

 기준이 되는 거리를 보면 +1 +1 +2 +2 +3 +3 +4 +4 +5 +5.....와 같이 n이 두 번 더해지고 n+1이 두 번 더해지고 n+2가 두 번 더해지고... 하는 식으로 진행됨을 알 수 있다.

 

코드

if __name__ == '__main__':
    T = int(input())  # 테스트 케이스의 개수

    for _ in range(T):
        x, y = map(int, input().split())  # 현재 위치와 목표 위치
        distance = y - x  # 두 위치의 거리
        movement = 0  # 이동한 거리
        res = 0  # 공간이동 장치 작동 횟수

        nextStep = 1  # 이동 거리 증가량
        stepCount = 0  # netStep을 몇 번 더해줬는지 카운트

        while distance > movement:  # 두 위치의 거리가 이동한 거리보다 작거나 같을 때까지
            movement += nextStep  # 이동 거리에 nextStep을 더해 준다.
            res += 1  # 이동한 횟수 증가
            stepCount += 1  # 카운트 변수 증가

            if stepCount == 2:  # nextStep을 두 번 더해줬다면
                stepCount = 0
                nextStep += 1  # nextStep을 1 증가시킨다.

        print(res)
반응형

'Algorithm > Baekjoon' 카테고리의 다른 글

10836. 여왕벌 (Python)  (0) 2022.04.09
10800. 컬러볼 (Python)  (0) 2022.04.08
1765. 닭싸움 팀 정하기 (Python)  (0) 2022.04.05
1800. 인터넷 설치 (Python)  (0) 2022.04.04
10159. 저울 (Python)  (0) 2022.04.02

댓글