728x90
하..AC 나오는 문제였다.
아니 풀이는 다 풀었는데 50퍼에서 계속 틀렸읍니다. 뜨니 멘탈이 와르르..
아무튼 이 문제는 덱을 이용하여 푸는 문제이다. 근데 문제 중간에서 R을 입력하면 뒤집는다고 나와있는데, 굳이 덱에 있는 숫자들을 돌릴 필요는 없다라는 걸 이틀만에 깨달았다;;;
생각보다 간단하게 생각하면 된다. bool을 이용해 뒤집었을때, 안뒤집어졌을때, 에러가 났을때, 안났을때 등을 설정해놓으면 생각보다 쉽게 문제를 풀 수 있었다.
근데 아까 50퍼에서 틀렸다는건 아마도 input 단계에서 입력하는 방법이 잘못 됐던것 같다.
난 그냥 숫자만 입력하면 되는줄 알았지만, ㄹㅇ 예시 입력 페이지에서 나오는 것처럼 입력을 해야 했던 것이었다.
이것도 이틀만에 알아채서 그거 찾아보며 구현을 하느라 좀 걸렸다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string con;
int T;
cin >> T;
string type_num;
int num;
string a;
while(T--) {
cin >> con;
cin >> num;
cin >> type_num;
deque<int> dq;
for(int i = 0; i < type_num.length(); i++) {
if(type_num[i] == '[') {
continue;
} else if (type_num[i] >= '0' && type_num[i] <= '9') {
a += type_num[i];
} else if (type_num[i] == ',' || type_num[i] == ']') {
if(!a.empty()) {
dq.push_back(stoi(a));
a.clear();
}
}
}
bool print = true;
bool tmp = true;
for(int i = 0; i < con.length(); i++) {
if(con[i] == 'R') {
if(tmp == true) {
tmp = false;
} else {
tmp = true;
}
} else if (con[i] == 'D') {
if(dq.empty()){
print = false;
cout << "error" << '\n';
break;
}
if(tmp == false) {
dq.pop_back();
} else {
dq.pop_front();
}
}
}
if(print) {
cout << "[";
if(tmp == false) {
while(!dq.empty()) {
cout << dq.back();
dq.pop_back();
if(!dq.empty()) {
cout << ",";
}
}
cout << "]\n";
} else if (tmp == true) {
while(!dq.empty()) {
cout << dq.front();
dq.pop_front();
if(!dq.empty()){
cout << ",";
}
}
cout << "]\n";
}
}
}
}
코드가 많이 더럽다. 이해해 줘라; 아직 배우는 단계다. 구현만 되도 감사할 따름..
여담.
이 문제는 sloved.ac 점수에 반영이 안된다. 뭐지;
는 아니었다. 걍 오류였네. 이 문제 골드 5였다;;;; 무야;;
728x90
'Algorithm > 백준' 카테고리의 다른 글
1629. 곱셈(C++) (0) | 2021.04.21 |
---|---|
2178. 미로 탐색 (C++) (0) | 2021.04.18 |
1926. 그림 (C++) (0) | 2021.04.18 |
2504. 괄호의 값 (C++) (0) | 2021.04.16 |
10845. 큐(C++) (0) | 2021.04.12 |
댓글