Algorithm/baekjoon
04 연결리스트- 백준 5397
쿠뱃봉
2022. 1. 17. 16:50
1. 백준 5397 : 키로거
(1)코드
#include<iostream>
#include<list>
#include<string>
using namespace std;
int main(void) {
int n;
cin >> n;
for (int j = 0; j < n; j++) {
string input;
cin >> input;
list<char>pw;
list<char>::iterator itr = pw.end();
for (int i = 0; i < input.length(); i++) {
if (input[i] == '<') {
if (itr == pw.begin())continue;
itr--;
}
else if (input[i] == '>') {
if (itr == pw.end())continue;
itr++;
}
else if (input[i] == '-') {
if (itr == pw.begin())continue;
itr = pw.erase(--itr);
}
else {
pw.insert(itr, input[i]);
}
}
for (auto it = pw.begin(); it != pw.end(); it++) {
cout << *it;
}
cout << '\n';
pw.clear();
}
return 0;
}
(2)알게된 개념
1.STL list 자료구조에서 insert() 과 erase() 기능
-insert() 기능
L={'A','B','C'} 이고 itr이 B를 가리킬 때
insert(itr,'D') 를 실행하면
L={'A','D','B','C'}가 된다.
이후, itr는 'B'를 가리킨다.
-erase() 기능
L={'A','B','C'} 이고 itr이 B를 가리킬 때
erase(itr) 를 실행하면
L={'A','C'}가 되며
itr는 'C'를 가리킨다.
참고블로그)
https://hugssy.tistory.com/217
STL list insert, erase (C++)
C++ STL list의 삽입과 삭제에 대해서 간단히 정리하고자 한다. STL list .insert(iterator, 넣을 값) L = { A, B, C } 연결리스트는 A->B->C 와 같이 구성되어 있는 것이지만 표기의 편의성을 위해 위와 같이 표..
hugssy.tistory.com
2.STL list 자료구조에서 begin() 과 end()
참고블로그)