▶문제
▶풀이
- 이동 시 전에 이동한 거리보다 같거나, 1씩 크거나 작다.
- 이동해야할 거리 = y지점 - x지점
- 처음 이동 시와 마지막 도착 지점까지의 이동은 무조건 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 |