BOJ - 5397번_키로거 (C++)
BOJ - 5397번_키로거
키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램 작성하기
참고) 백스페이스를 입력했다면, ‘-‘가 주어진다. 이때 커서의 바로 앞에 글자가 존재한다면, 그 글자를 지운다. 화살표의 입력은 ‘<’와 ‘>’로 주어진다. 이때는 커서의 위치를 움직일 수 있다면, 왼쪽 또는 오른쪽으로 1만큼 움직인다.
풀이
C++ STL list를 이용한다.
소스코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
string s;
cin >> n;
while(n--) {
cin >> s;
list<char> ls;
auto cur = ls.begin();
for(auto c : s) {
if(c=='<') {
if(cur!=ls.begin()) {
cur--;
}
}
else if(c=='>') {
if(cur!=ls.end()) {
cur++;
}
}
else if(c=='-') {
if(cur!=ls.begin()) {
cur--;
cur = ls.erase(cur);
}
}
else {
ls.insert(cur,c);
}
}
for(auto c : ls) {
cout << c;
}
cout << "\n";
}
}