๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 18115๋ฒˆ - ์นด๋“œ ๋†“๊ธฐ

by ์•ˆ์ฃผํ˜• 2022. 6. 19.

๋ฌธ์ œ

 

18115๋ฒˆ: ์นด๋“œ ๋†“๊ธฐ

์ˆ˜ํ˜„์ด๋Š” ์นด๋“œ ๊ธฐ์ˆ ์„ ์—ฐ์Šตํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜ํ˜„์ด์˜ ์†์— ๋“ค๋ฆฐ ์นด๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋‚ด๋ ค๋†“์•„ ๋ฐ”๋‹ฅ์— ์Œ“์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์ˆ˜ํ˜„์ด๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์€ ๋‹ค์Œ 3๊ฐ€์ง€๋‹ค. ์ œ์ผ ์œ„์˜ ์นด๋“œ 1์žฅ์„ ๋ฐ”๋‹ฅ์— ๋‚ด๋ ค๋†“๋Š”๋‹ค.

www.acmicpc.net

 

์ฝ”๋“œ

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

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int N; cin>>N;
    vector<int>v(N);
    deque<int>dq;
    for(int i=0; i<N; i++) cin>>v[i];
    reverse(v.begin(),v.end());
    int num = 1;
    for(int i:v){
        if(i==1) dq.push_back(num);
        else if(i==2){
            int temp = dq.back();
            dq.pop_back();
            dq.push_back(num);
            dq.push_back(temp);
        }
        else if(i==3) dq.push_front(num);
        num++;
    }
    
    while(!dq.empty()){
        int out = dq.back();
        cout<<out<<' ';
        dq.pop_back();
    }
}

 

ํ’€์ด

deque๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. 

์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์œ„์—์„œ๋ถ€ํ„ฐ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์นด๋“œ๋ฅผ ๋‚ด๋ ค๋†“์„ ๋•Œ ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ ๋“ค์„ ์ž…๋ ฅ๋ฐ›์•„ reverse ์‹œ์ผœ์ค๋‹ˆ๋‹ค.

์นด๋“œ์˜ ์œ„๋ฅผ deque์˜ back, ์•„๋ž˜๋ฅผ deque์˜ front๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ’€์—ˆ์Šต๋‹ˆ๋‹ค. 

  1. 1๋ฒˆ์งธ ๊ธฐ์ˆ ์ด๋ฉด deque์˜ back ๋ถ€๋ถ„์— ์‚ฝ์ž…
  2. 2๋ฒˆ์งธ ๊ธฐ์ˆ ์ด๋ฉด deque์˜ ๋‘ ๋ฒˆ์งธ back ๋ถ€๋ถ„์— ์‚ฝ์ž…
  3. 3๋ฒˆ์งธ ๊ธฐ์ˆ ์ด๋ฉด deque์˜ front ๋ถ€๋ถ„์— ์‚ฝ์ž…

๊ทธ ํ›„ ์œ„์—์„œ๋ถ€ํ„ฐ deque์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€