https://www.acmicpc.net/problem/5397
해설
이번 문제를 벡터로 푸실려는 분들이 많은 텐데, 아마 시간 초과 뜰 확률이 높다.
나는 시간 초과를 방지 해 원소의 삽입이 빠른 덱으로 풀었다. (다른 블로그보면 스택으로도 풀고, 리스트로도 풀고 여러 가지 방법으로 푼 거 같다.)
<,>,-와 같이 커서를 신경써야하기 때문에 커서를 cur로 두고 풀었다.
˙˙˙
소스코드
#include <iostream>
#include <deque>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n; cin >> n;
while (n--) {
string tt;
cin >> tt;
deque<char> st;
int cur = 0;
for (int i = 0; i < tt.size(); i++) {
if (tt[i] == '<') {
if (st.size() == 0 || cur==0) continue;
cur -= 1;
}
else if (tt[i] == '>') {
if (st.size()==cur) continue;
cur += 1;
}
else if (tt[i] == '-') {
if (cur == 0) continue;
auto it = st.begin() + cur-1;
st.erase(it);
if (cur == 0) continue;
cur -= 1;
}
else {
auto it = st.begin()+cur;
st.insert(it, tt[i]);
cur +=1;
}
}
for (int i = 0; i < st.size(); i++)
cout << st[i];
cout << '\n';
}
}
'백준 문제 풀이' 카테고리의 다른 글
[백준 12015] 가장 긴 증가하는 부분 수열 2 (0) | 2020.04.02 |
---|---|
[백준 2565] 전깃줄 (0) | 2020.04.01 |
[백준 11053] 가장 긴 증가하는 부분 수열 (0) | 2020.03.30 |
[백준 12865] 평범한 배낭 (0) | 2020.03.30 |
[백준 9252] LCS 2 (0) | 2020.03.30 |
댓글