• toc {:toc}

๋ฌธ์ œ

์ฐฝ์˜์ด๋Š” ๊ฐ•์‚ฐ์ด์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ›”์น˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ•์‚ฐ์ด๊ฐ€ย ์‚ฌ์šฉํ•˜๋Š” ์ปดํ“จํ„ฐ์— ํ‚ค๋กœ๊ฑฐ๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค. ๋ฉฐ์น ์„ ๊ธฐ๋‹ค๋ฆฐ ๋์— ์ฐฝ์˜์ด๋Š” ๊ฐ•์‚ฐ์ด๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐฝ์— ์ž…๋ ฅํ•˜๋Š” ๊ธ€์ž๋ฅผ ์–ป์–ด๋ƒˆ๋‹ค.

ํ‚ค๋กœ๊ฑฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅธ ๋ช…๋ น์„ ๋ชจ๋‘ ๊ธฐ๋กํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐ•์‚ฐ์ด๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ, ํ™”์‚ดํ‘œ๋‚˜ ๋ฐฑ์ŠคํŽ˜์ด์Šค๋ฅผ ์ž…๋ ฅํ•ด๋„ย ์ •ํ™•ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๊ฐ•์‚ฐ์ด๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐฝ์—์„œ ์ž…๋ ฅํ•œ ํ‚ค๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ•์‚ฐ์ด์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.ย ๊ฐ•์‚ฐ์ด๋Š” ํ‚ค๋ณด๋“œ๋กœ ์ž…๋ ฅํ•œ ํ‚ค๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋ฐฑ์ŠคํŽ˜์ด์Šค, ํ™”์‚ดํ‘œ์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ•์‚ฐ์ด๊ฐ€ ์ž…๋ ฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ธธ์ด๊ฐ€ L์ธ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค L โ‰ค 1,000,000) ๊ฐ•์‚ฐ์ด๊ฐ€ ๋ฐฑ์ŠคํŽ˜์ด์Šค๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด, โ€™-โ€˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ ์ปค์„œ์˜ ๋ฐ”๋กœ ์•ž์— ๊ธ€์ž๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, ๊ทธ ๊ธ€์ž๋ฅผ ์ง€์šด๋‹ค. ํ™”์‚ดํ‘œ์˜ ์ž…๋ ฅ์€ โ€™<โ€˜์™€ โ€™>โ€˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ๋Š” ์ปค์„œ์˜ ์œ„์น˜๋ฅผ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1๋งŒํผ ์›€์ง์ธ๋‹ค. ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ผ๋ถ€์ด๋‹ค. ๋ฌผ๋ก , ๋‚˜์ค‘์— ๋ฐฑ์ŠคํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด์„œ ์ง€์šธ ์ˆ˜๋Š” ์žˆ๋‹ค. ๋งŒ์•ฝ ์ปค์„œ์˜ ์œ„์น˜๊ฐ€ ์ค„์˜ ๋งˆ์ง€๋ง‰์ด ์•„๋‹ˆ๋ผ๋ฉด, ์ปค์„œ ๋ฐ ์ปค์„œ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋ชจ๋“  ๋ฌธ์ž๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™ํ•œ๋‹ค.

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, ๊ฐ•์‚ฐ์ด์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๊ธธ์ด๋Š” ํ•ญ์ƒ 0๋ณด๋‹ค ํฌ๋‹ค.

์ถœ์ฒ˜:https://www.acmicpc.net/problem/5397

ํ’€์ด

๊ธฐ๋Šฅ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋จ.

์ฒ˜์Œ์—๋Š” -์™€ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋˜๋Š” ๋ถ€๋ถ„์„ pop_back, push_back์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ ๋ฐฉํ–ฅํ‚ค๋ฅผ ํ†ตํ•ด์„œ ์ปค์„œ๊ฐ€ ์œ„์น˜ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— erase, insert๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ์„ ๊นจ๋‹ฌ์•˜์Œ.

// ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ
#include <bits/stdc++.h>
 
using namespace std;
 
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int T;
    cin >> T;
    string str;
    while(T--){
        list<char> L = {};
        cin >> str;
        auto cursor = L.begin();
        for(auto c : str){
            if(c == '<')
                {if(cursor != L.begin()) cursor--;}
            else if(c == '>')
                {if(cursor != L.end()) cursor++;}
            else if(c == '-'){
                if(cursor != L.begin()){
                    cursor--;
                    cursor = L.erase(cursor);
                }
            } 
            else{
                L.insert(cursor, c);
            }
            
        }
        for(auto elem : L){
            cout << elem;
        }
        cout << endl;
    }
 
    return 0;
}