구현, 수학

[백준] 1011. Fly me to the Alpha Centauri 풀이

hch06 2025. 2. 2. 16:34

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