반응형
https://www.acmicpc.net/problem/18115
자료구조 (deque)를 사용한 문제였습니다.
📕 풀이방법
연산을 되감기 한다고 생각해 봅시다. 예제 입력2가
5
2 3 3 2 1
일 때 1 2 3 4 5라는 배열이 완성되어야 합니다. 여기서 답을 구하려면 2 3 3 2 1을 역순으로 배치해야합니다. 1 2 3 3 2를 한다면 원래 배열을 찾을 수 있습니다. 행동을 반대로 한다면 되감기 처럼 원래 상태가 된다고 이해하면 생각하기 수월할 것 같습니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int n, op[1000001];
deque <int> cards;
int main(){
cin >> n;
int num = 1;
for(int i = n; i >= 1; i--) cin >> op[i];
for(int i = 1; i <= n; i++) {
if(op[i] == 1) {
cards.push_front(num);
}
else if(op[i] == 2){
int tmp = cards.front();
cards.pop_front();
cards.push_front(num);
cards.push_front(tmp);
}
else {
cards.push_back(num);
}
num++;
}
for(auto c : cards) cout << c << ' ';
}
'Algorithm > 자료구조' 카테고리의 다른 글
(C++) - 백준(BOJ) 2204번 : 도비의 난독증 테스트 (0) | 2021.08.22 |
---|---|
(C++) - 백준(BOJ) 10546번 : 배부른 마라토너 (0) | 2021.08.14 |
(C++) - 백준(BOJ) 16499번 : 동일한 단어 그룹화하기 (0) | 2021.07.30 |
(C++) - 프로그래머스(2021 카카오 채용연계형 인턴십) : 표 편집 (0) | 2021.07.16 |
(C++) - 백준(BOJ) 4358번 : 생태학 (0) | 2021.07.07 |