[C++] 백준 10804 : 카드 역배치

#include <iostream>
#include <algorithm>
using namespace std;

int arr[20];
int a, b, tmp;
int main(int argc, char** argv){
  for(int i = 0; i < 20; i++){
    arr[i] = i+1; // 초깃값 설정
  }
  
  for(int i = 0; i < 10; i++){
    scanf("%d %d", &a, &b);

    //뒤집는 작업
    reverse(arr + a-1, arr + b); // 0부터 시작해서 -1 해줘야함.
  }

  for(int i = 0; i < 20; i++){
    printf("%d ", arr[i]); // 출력
  }

  return 0;
}

STL 라이브러리인 reverse를 사용해서 간단하게 풀었다.

원래 실제 역순을 취하는 알고리즘을 짤까 하다가 배열 두 개를 선언하고 복사하여 이용하려고 했지만 굉장히 비효율적이라는 생각이 들어 STL 라이브러리로 대신하게 되었다.

좋은 웹페이지 즐겨찾기