Algorithm(알고리즘)/백준
11_백준 1011번 파이썬 Fly me to the Alpha Centauri
고로케
2021. 6. 17. 00:56
반응형
문제는 이해가 되었고 내 머릿속에 다 그렸는데 코드로 어떻게 짜야할지
고민하다가 시간을 많이 쓴 문제..
결국 해냈다,,!
아래 내 코드의 핵심은 distance가 0부터 음수인 구간은 이동 횟수가 일정하고
양수로 전환될 때 횟수가 1늘어난다는 규칙을 이용했다!
다시 보니까 그냥 2번 이동 할 때마다 움직이는 거리가 같이 증가한다
아래 표를 보자!
- 1번,2번 실행은 예외
- (y좌표 - x좌표)distance는 move의 제곱
- 실행(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
반응형