https://www.acmicpc.net/problem/1011
x에서 y까지 최소 이동을 하려면 이동 광년이 피라미드식(예: 12321)으로 나와야 한다.
이때 이동광년들의 합이 이동한 거리가 된다.
따라서 양 끝의 숫자를 더해가면서 더한 수 만큼 남은 길이를 차감한다.
이를 남은 길이가 없을 때까지 반복하고, 그 횟수를 출력한다.
C
더보기
#include <stdio.h>
int main(){
int t; scanf("%d", &t);
while(t--){
int x, y; scanf("%d %d", &x, &y);
int len = y - x;
int i = 0, cnt = 0;
while(len > 0){
i++;
if(len - (i*2) < 0){
cnt += (len/i == 1 && len % i != 0) ? 2 : 1;
break;
}
else {len -= i * 2; cnt += 2;}
}
printf("%d\n", cnt);
}
}
Python
더보기
t = int(input())
for _ in range(t):
x, y = map(int, input().split())
len = y - x; i = 0; cnt = 0
while len > 0:
i += 1
if len - i*2 < 0:
cnt += 2 if len//i == 1 and len % i != 0 else 1
break
else:
len -= i*2
cnt += 2
print(cnt)
'구현, 수학' 카테고리의 다른 글
[백준] 1094. 막대기 풀이 (0) | 2025.02.02 |
---|---|
[백준] 1085. 직사각형에서 탈출 풀이 (0) | 2025.02.02 |
[백준] 1009. 분산처리 풀이 (0) | 2025.02.02 |
[백준] 1008. A/B 풀이 (0) | 2025.02.01 |
[백준] 1001. A-B 풀이 (0) | 2025.02.01 |