Programming/C

[백준] 10811: 바구니 뒤집기

gayeon_ 2024. 1. 11. 09:44

첫 줄에 바구니 개수, 순서를 변경할 횟수를 입력받고

그 다음 줄부터 M번 줄까지 역순으로 만들 바구니의 번호를 입력한다.

 

입력이 완료되면 변경된 바구니의 순서를 출력하는 문제이다.

 

 

 

입출력 예시다.

 

 

 

#include <stdio.h>

int main() {
    int N;
    int M;
    int i;
    int j;
    int ary[100] = {0};
    int tmp = 0;
    scanf("%d %d", &N, &M);

    for(int i = 1; i <= N; i++) {
        ary[i] = i;
    }

    for(int a = 1; a <= M; a++) {
    scanf("%d %d", &i, &j);
        for(int b = i; b <= j; b++) {
            tmp = ary[b];
            ary[b] = ary[j];
            ary[j] = tmp;
            j--;
           }
    }

    for(int i = 1; i <= N; i++) {
        printf("%d ", ary[i]);
    }
    return 0;
 }

임시 변수 tmp를 선언해 사용했다.

루프를 한 번 돌 때마다 i값은 증가하고 j 값이 줄어든다. 

1번부터 4번 바구니까지의 순서를 역순으로 바꾼다고 예를 들면,

1번과 4번 바구니를 바꾸고 2번과 3번 바구니를 바꿀 수 있도록 j 값을 감소한 것이다.