반응형
AC
https://www.acmicpc.net/problem/5430
접근 방식 및 풀이
- deque을 활용하면 그렇게 어려운 문제를 아니었는데, 생각해줘야할 것이 많아 귀찮았다.
- 그런데 그 귀찮은 것을 신경써주지 못해서 계속해서 제출에 실패했다.
- 우선 입력값이 깔끔하게 주어지지 않았고, 출력값도 일반적이지 않았다.
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int t;
cin >> t;
while(t) {
string func;
int length;
string array_string;
cin >> func;
cin >> length;
cin >> array_string;
deque<int> dq;
int error = 0;
int flag = 1;
int i = 1;
while (array_string[i]!='\0'){
int x = 0;
while (array_string[i] >= '0' and array_string[i] <= '9') {
x *= 10;
x += int(array_string[i] - '0');
i++;
}
if (x != 0) {
dq.push_back(x);
}
i++;
}
i = 0;
while (func[i]!='\0') {
if (func[i] == 'R') flag = !flag;
if (func[i] == 'D') {
if (dq.empty()) {
error=1;
break;
}
if (flag) {
dq.pop_front();
} else {
dq.pop_back();
}
}
i++;
}
if (!error) {
cout << "[";
}
while (!dq.empty()) {
if (flag) {
auto c = dq.front();
dq.pop_front();
cout << c;
}
else {
auto c = dq.back();
dq.pop_back();
cout << c;
}
if (!dq.empty()) {
cout << ",";
}
}
if (!error) {
cout << "]\n";
} else {
cout << "error\n";
}
t--;
}
}
- 먼저 반복문을 통해 주어진 입력값을 정상적으로 처리해주어야 했다.
- deque를 활용해 R과 D를 구현하는 것은 쉬웠다. (flag 활용)
- 마지막으로 error 여부를 처리해야 했다.
- 문제해결 자체는 금방했는데 세부적인 부분을 빠르게 처리하지 못했다. 결국 시간이 많이흘러 다른 사람이 해결한 코드를 보고서야 해결했다.
- 문제의 핵심을 해결하는 것도 중요하지만 입력과 출력 등 세부사항이 올바르게 이루어지도록 처리하는 것도 중요한 것 같다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 체육복 (프로그래머스 lv1, 파이썬) (0) | 2021.06.07 |
---|---|
[알고리즘 연습] 쇠막대기 (백준 10799, 파이썬) (1) | 2021.05.07 |
[알고리즘 연습] 옥상 정원 꾸미기 (백준 6198, C++) (0) | 2021.04.10 |
[알고리즘 연습] 부분집합 (DFS) (0) | 2021.02.05 |
[알고리즘 연습] Ugly Numbers (0) | 2021.02.02 |