Algorithm(알고리즘)/백준

11_백준 1011번 파이썬 Fly me to the Alpha Centauri

고로케 2021. 6. 17.
반응형

문제는 이해가 되었고 내 머릿속에 다 그렸는데 코드로 어떻게 짜야할지 

고민하다가 시간을 많이 쓴 문제..
결국 해냈다,,!

 

아래 내 코드의 핵심은 distance가 0부터 음수인 구간은 이동 횟수가 일정하고 

양수로 전환될 때 횟수가 1늘어난다는 규칙을 이용했다!

다시 보니까 그냥 2번 이동 할 때마다 움직이는 거리가 같이 증가한다 

아래 표를 보자!

  1. 1번,2번 실행은 예외
  2. (y좌표 - x좌표)distance는 move의 제곱
  3. 실행(count)이 짝수 일 때 마다 그 다음에 1회 이동거리인 move가 1씩 증가했다.

요 세가지로 풀었다.

 

-> 예시) distance가 6번실행(12)과 7번실행(16) 사이값 일 때 (distance가 14라 가정)

6번을 실행하고 move+1 = 4

distance의 차이를 보면 6번 : 12  / 7번 : 16 으로 move(4)만큼 차이가 난다.

따라서 주어진 distance(y-x)가 저 사이의 distance인 14라 가정한다면 음수가 될 것이다!!

distance가 음수일 때 반복문을 탈출하자

 

 

    • 풀이
n = int(input())

for i in range(n):
    x, y = map(int, input().split())
    distance = y - x
    count = 0
    move = 1
    if distance < 4:
        print(distance)
        continue

    while distance > 0:
        distance -= move
        count += 1
        if count % 2 == 0:
            move += 1

    print(count)
# 입력
3
0 3
1 5
45 50
# 출력
3
3
4

 

반응형

댓글