본문 바로가기
알고리즘/BOJ

BOJ 15738 ) 뒤집기 (C++)

by twinkite 2022. 6. 20.
반응형
 

15738번: 뒤집기

첫째 줄에 배열 A의 크기 N(1 ≤ N ≤ 100,000)과 위치 K(1 ≤ K ≤ N), 연산의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째에는 배열 A에 들어있는 수가 1번째 수부터 순서대로 주어진다. 배열에 들어있는

www.acmicpc.net

algorithm 헤더의 reverse 함수를 사용하면 쉽게 해결이 가능한 문제다.

문제에서는 배열의 원소도 입력해주지만 실제 문제를 푸는 데에는 필요가 없으므로 입력만 받고 배열에는 몇 번째원소인지를 입력해주었다. 그 다음 들어오는 입력에 따라 reverse 함수를 이용해 배열을 뒤집어주고 마지막에 전체 배열을 돌면서 K번째 원소가 몇번째에 위치하고 있는지를 출력해 주면 된다. 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int N, K, M;
vector<int> v;
int main(){
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);

    cin>>N>>K>>M;
    int t;
    v = vector<int> (N);
    for(int i=0;i<N;i++){
        cin>>t;
        v[i]=i+1;
    }

    for(int j=0;j<M;j++){
        cin>>t;
        if(t>0){
            reverse(v.begin(), v.begin()+t);
        } else {
            t= -t;
            reverse(v.end()-t, v.end());
        }
    }

    for(int i=0;i<N;i++){
        if(v[i]==K){
            cout<<i+1; break;
        }
    }
    return 0;
}
반응형

'알고리즘 > BOJ' 카테고리의 다른 글

BOJ 3273 ) 두 수의 합 (C++)  (0) 2024.07.17
BOJ 15705 ) 단어 찾기 (C++)  (0) 2022.06.19
BOJ 3190 ) 뱀 (C++)  (0) 2022.06.16
BOJ 5921 ) Escaping the Farm (C++)  (0) 2022.06.13
BOJ 18877 ) Social Distancing (C++)  (0) 2022.06.10