https://www.acmicpc.net/problem/5397
[난이도] Silver2
[유형] 리스트
[풀이]
STL list를 선언한 뒤 iterator를 커서로 취급하여 문제를 해결하면 됩니다.
insert나 erase시 return 되는 iterator의 위치는 헷갈릴 수 있기 때문에 몇가지 예시를 해보면서
iterator의 위치를 파악해야 합니다.
#include <iostream>
#include <list>
#include <string>
using namespace std;
int N;
string s;
int main(){
cin >> N;
while(N--){
cin >> s;
list<char> li;
auto it = li.begin();
for(auto c : s){
if(c=='-'){
if(it==li.begin()) continue;
it--;
it = li.erase(it);
}else if(c=='<'){
if(it==li.begin()) continue;
it--;
}else if(c=='>'){
if(it!=li.end()) it++;
}else{
li.insert(it,c);
}
}
for(auto v : li) cout << v;
cout << "\n";
}
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver2/5397.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Silver2] 15664 : N과 M (10) (C++) (0) | 2022.11.06 |
---|---|
[BOJ/백준][Silver2] 1138 : 한 줄로 서기 (C++) (0) | 2022.11.06 |
[BOJ/백준][Silver1] 15903 : 카드 합체 놀이 (C++) (0) | 2022.11.06 |
[BOJ/백준][Silver1] 2343 : 기타 레슨 (C++) (0) | 2022.09.26 |
[BOJ/백준][Gold5] 2866 : 문자열 잘라내기 (C++) (0) | 2022.09.26 |