https://www.acmicpc.net/problem/1011
#코드
T = int(input())
for i in range(T):
x,y = map(int, input().split())
Distance = y-x
count = 1 #공간이동 장치 작동 횟수 반복 확인
while True:
BeforeValue = count **2 #공간이동 장치 작동 횟수 반복되는 수 중 중간 값
if Distance <= BeforeValue+count and Distance >= BeforeValue-(count-1): #Distance가 DeforeValue 영역 내에 있을 경우
if Distance > BeforeValue: #만약 Distance가 중간 값보다 클 경우
print(2*count) #공간이동 장치 작동 횟수 출력
break
else:
print((2*count)-1) #공간이동 장치 작동 횟수 출력
break
else:
count+=1
#풀이과정
1. 입력 값 확인
T = 테스트 케이스
x = 처음 위치
y = 도착 위치
# x는 y보다 반드시 작아야 한다.
2. 출력 값 확인
처음 위치에서 도착 위치까지 이동을 시도한 횟수
3. 조건 확인
한번 이동을 했다면(k)
그 다음에는 k-1, k, k+1 3개 중 하나로 이동이 가능하다.
마지막 도착 하기 전에는 반드시 1광년만 이동 가능
ex : 1광년 이동 했을때 0광년 1광년 2광년 이동이 가능하지만 0광년는 의미가 없으니 제외
4. 계산식 확인
거리를 계산하기 위해서 제곱(**)을 활용하여 구할 수 있고 바로 그 다음 거리의 공간이동 작동 횟수를 구할 수 있음을 확인
총 이동해야 하는 거리 (Distance) 이동 거리 공간이동 작동 횟수 반복횟수 Distance 계산 횟수 계산 1 1 1 1 1의 제곱 2 11 2 1 x 2 3 111 3 2 4 121 3 2의 제곱 5 1211 4 2 2x2 6 1221 4 7 12211 5 3 8 12221 5 9 12321 5 3의 제곱 10 123211 6 3 3x2 11 123221 6 12 123321 6 13 1233211 7 4 14 1233221 7 15 1233321 7 16 1234321 7 4의 제곱 17 12343211 8 4 4x2 18 12343221 8 19 12343321 8 20 12344321 8
'문제풀이 > #Python' 카테고리의 다른 글
백준(Baekjoon) 2839번 : 설탕배달 (0) | 2021.11.22 |
---|---|
백준(Baekjoon) 2775번 : 부녀회장이 될테야 (0) | 2021.11.09 |
백준(Baekjoon) 10250번 : ACM 호텔 (0) | 2021.11.08 |