-
[5397] 키로거BOJ 2022. 2. 11. 03:59
https://www.acmicpc.net/problem/5397
5397번: 키로거
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입
www.acmicpc.net
<문제>
list<char>를 사용해서 구현해주면 된다.
erase는 it의 한칸 왼쪽을 지우고, erase()가 반환하는걸 그대로 넣어준다.
<소스코드>
#include <bits/stdc++.h>using namespace std;int t;list<char> l;string s;int main(void) {ios_base::sync_with_stdio(0);cin.tie(0);cin >> t;while (t--) {l.clear();auto it = l.begin();cin >> s;int i, S = s.length();for (i = 0; i < S; i++) {if (s[i] == '<')it = (it == l.begin()) ? it : --it;else if (s[i] == '>')it = (it == l.end()) ? it : ++it;else if (s[i] == '-') {if (it == l.begin()) continue;it = l.erase(--it);} elsel.insert(it, s[i]);}for (auto& x : l) cout << x;cout << '\n';}}'BOJ' 카테고리의 다른 글
[13023] ABCDE (0) 2022.02.11 [16929] Two Dots (0) 2022.02.11 [11758] CCW (0) 2022.02.11 [1035] 조각 움직이기 (0) 2022.02.10 [1167] 트리의 지름 (0) 2022.02.10