백준

백준 - Fly me to the Alpha Centauri

un_plugged 2024. 10. 1. 19:17

▶문제

 

 

 

▶풀이

  1. 이동 시 전에 이동한 거리보다 같거나, 1씩 크거나 작다.
  2. 이동해야할 거리 = y지점 - x지점
  3. 처음 이동 시와 마지막 도착 지점까지의 이동은 무조건 1이다. 

우선 문제를 읽고 이 정도로 간략히 정리 해보았다. 

일단 규칙성을 파악해야한다. 

  • 공간이동 장치 작동 횟수는 1, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7...의 규칙을 보이고 있다.
  • 홀수가 될 때마다 숫자의 반복 횟수가 늘어난다. (3일 때 2번으로, 5일 때 3번으로, 7일 때 4번으로 늘어남)

 

전체 코드

t = int(input()) #테스트 케이스 개수 입력 받기

for _ in range(t): #t만큼 반복하면서, 각 테스트 케이스마다 두 정수 x(출발점)와 y(도착점)를 입력
    x, y = map(int, input().split())
    
    distance = y - x # y와 x사이의 거리
    move_distance = 0 # 이동 거리
    count = 0 # 공간 장치 이동 횟수
    moving_count = 0 # 반복 횟수

    while move_distance < distance:
        count += 1
        if count % 2 != 0:
            moving_count += 1
        move_distance += moving_count
    print(count)
while move_distance < distance:
        count += 1
        if count % 2 != 0:
            moving_count += 1
        move_distance += moving_count

여기서 반복 루프를 좀 더 설명하자면 아래와 같다.

 

  • move_distance가 distance에 도달할 때까지 반복
  • 이동 횟수(count)
  • 홀수 번째 이동(cnt % 2 != 0)에서는 moving_count를 1씩 증가시킨다.
  • 현재까지 이동한 거리를 업데이트

 

'백준' 카테고리의 다른 글

백준 - 도로  (0) 2024.10.29
백준 - 유기농 배추  (0) 2024.10.01
백준 - 정수 삼각형  (0) 2024.09.13
백준 - 신나는 함수 실행  (0) 2024.09.13
백준 - 분해합  (0) 2024.05.22