[210318][백준/BOJ] 5397번 키로거
문제
입출력
풀이
STL list로 문제를 풀었다.
1) '<' 일때는 커서가 맨 앞이 아닌 경우에 왼쪽으로 한칸 이동
2) '>' 일때는 커서가 맨 뒤가 아닌 경우에 오른쪽으로 한칸 이동
3) '-' 일때는 커서가 맨 앞이 아닌 경우에 커서 왼쪽에 있는 글자를 지움. 커서가 가르키는 글자를 지우는게 아니므로 커서를 왼쪽으로 한칸 보내고 글자를 지움
코드
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
while(n--)
{
string str;
cin >> str;
list<char> L;
list<char>::iterator t = L.end();
for(auto e:str)
{
if (e == '<')
{
if (t != L.begin())
t--;
}
else if (e == '>')
{
if (t != L.end())
t++;
}
else if (e == '-')
{
if (t != L.begin())
{
t--;
t = L.erase(t);
}
}
else
L.insert(t, e);
}
for (auto e:L)
cout << e;
cout << '\n';
L.clear();
}
}
느낀점
STL, string, auto는 c++의 기능이므로 c스타일의 문법으로 접근해서는 안된다.
실행속도를 위해 cin/cout 대신에 scanf/printf를 쓰다보니 이 문제를 자주 보게 된다.
앞으로 더 조심하도록 하자
Author And Source
이 문제에 관하여([210318][백준/BOJ] 5397번 키로거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kwkim95/210318백준BOJ-5397번-키로거저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)