[23018][伯俊/BOJ]5397番キーホルダー
1510 ワード
質問する
にゅうしゅつりょく
に答える
STLリストで問題を解く.
1)<の場合、カーソルが一番前でない場合は、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を使用すると、この問題がよく見られます.
これからは気をつけてね
Reference
この問題について([23018][伯俊/BOJ]5397番キーホルダー), 我々は、より多くの情報をここで見つけました https://velog.io/@kwkim95/210318백준BOJ-5397번-키로거テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol