Algorithm ๐ง๐ป๐ป/๋ฐฑ์ค(BOJ)
[๋ฐฑ์ค,c++] 18115๋ฒ - ์นด๋ ๋๊ธฐ
dkswnkk
2022. 6. 19. 00:23
๋ฌธ์
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๋ฒ์งธ ๊ธฐ์ ์ด๋ฉด deque์ back ๋ถ๋ถ์ ์ฝ์
- 2๋ฒ์งธ ๊ธฐ์ ์ด๋ฉด deque์ ๋ ๋ฒ์งธ back ๋ถ๋ถ์ ์ฝ์
- 3๋ฒ์งธ ๊ธฐ์ ์ด๋ฉด deque์ front ๋ถ๋ถ์ ์ฝ์
๊ทธ ํ ์์์๋ถํฐ deque์ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.