문제설명
어떤 이동거리에 대해 움직이는 최소 횟수를 구하는 문제입니다.
이동 방법은 1칸 점프 부터 시작해서, n 번째에 x칸 점프 했다면 n+1 번째는 x-1 or x or x+1 칸 점프할 수 있습니다.
끝 지점은 반드시 1칸 점프로 도착해야합니다.
풀이과정
1. 이동거리가 n일 때, 최소 이동횟수를 구해봤습니다.
2. 위를 구해보니, 특정 이동 횟수에 대해 갈 수 있는 최대 거리의 규칙이 보였습니다.
3. 이동횟수 i, i 일 때 이동할 수 있는 최대거리 x
4. 최초로 i에 대한 x가 이동거리 <= x 인 i r가 답입니다. (이동거리 <= x 인 i의 최솟값)
파이썬코드
import sys
readline = sys.stdin.readline
T = int(input())
for _ in range(T):
S, E = map(int, readline().split())
n = E-S
i, x, y = 1, 1, 1
while not n<=x: # i 횟수에 갈 수있는 최대거리 x가 n 이상인걸 찾음
x = x + y
i += 1
if i%2==0:
y += 1
print(i)
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 17367: 공교육도박 파이썬 풀이 (2) | 2021.07.15 |
---|---|
[백준] 1072: 게임 파이썬 리뷰 - 연산 오류, Y*100//X, int(Y/X*100) (0) | 2021.05.09 |
[백준] 6236: 용돈 관리 파이썬 리뷰 (0) | 2021.02.23 |
[백준] 1041: 주사위 파이썬 리뷰 (0) | 2021.02.19 |
[백준] 14501: 퇴사 파이썬 리뷰 (0) | 2021.02.14 |
댓글