Layer7

-Layer7 백준 바구니 뒤집기

KSJ._.seven11 2023. 4. 9. 21:27

 

모든 순서를 바꾼 다음 가장 왼쪽에 있는 바구니부터 출력해야 하는 문제다.

 

문제에 대한 설명: 

 

먼저, 처음에는 1부터 n까지의 번호가 순서대로 적힌 상태로 시작한다. 그리고 m개의 뒤집기 연산을 수행할 수 있다.

각각의 뒤집기 연산은 시작 인데스와 끝 인덱스의 해당되며 해당 구간을 뒤집는 것이 포인트다.\

 즉 뒤집기 연산을 수행한 후에는 구간이 뒤집힌 상태로 배열이 변경된다.

 즉 2부터 5까지의 구간이 뒤집혀 2 4 3 5 1 의 배열이 만들어 진다.

 

그렇게 작성한 코드는 아래와 같다.

 

#include <stdio.h>

int main() {
    int n, m, i, j, k;
    scanf("%d %d", &n, &m);
    int arr[n];
    for (i = 0; i < n; i++) {
        arr[i] = i+1;
    }
    for (i = 0; i < m; i++) {
        scanf("%d %d", &j, &k);
        for (j--; j < k; j++, k--) {
            int temp = arr[j];
            arr[j] = arr[k-1];
            arr[k-1] = temp;
        }
    }
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

 

야호! 성공이다 !