๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 5397๋ฒˆ - ํ‚ค๋กœ๊ฑฐ

by ์•ˆ์ฃผํ˜• 2022. 6. 3.

๋ฌธ์ œ

 

5397๋ฒˆ: ํ‚ค๋กœ๊ฑฐ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ•์‚ฐ์ด๊ฐ€ ์ž…๋ ฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ธธ์ด๊ฐ€ L์ธ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ L ≤ 1,000,000) ๊ฐ•์‚ฐ์ด๊ฐ€ ๋ฐฑ์ŠคํŽ˜์ด์Šค๋ฅผ ์ž…

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <list>

using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    
    int n; cin>>n;
    while(n--){
        list<char>li;
        auto it = li.begin();
        string s; cin>>s;
        
        for(char c: s){
            if(c=='>'){
                if(it!=li.end()) it++;
            }
            else if(c=='<'){
                if(it!=li.begin()) it--;
            }
            else if(c=='-'){
                if(it!=li.begin()){
                    it--;
                    it=li.erase(it);
                }
            }
            else li.insert(it, c);
        }
        
        for(auto it=li.begin(); it!=li.end(); it++) cout<<*it;
        cout<<'\n';
        
    }
}

 

ํ’€์ด

๋ฌธ์ œ ์ดํ•ด๋Š” ๊ฐ„๋‹จํ•œ๋ฐ ์ •๋‹ต๋ฅ ์ด ๋‚ฎ์„๊ฑธ ์ง์ ‘ ํ’€์–ด๋ณด๊ณ  ์ฒด๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

c++์˜ list์— ๋Œ€ํ•ด์„œ ์กฐ๊ธˆ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค.

  • c++์˜ list๋Š” ๋”๋ธ” ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ(doubly linked list)๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.
  • push_front(), push_back(), pop_front(), pop_back() ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ list ์–‘ ๋์—์„œ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • insert(), erase() ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋…ธ๋“œ ์ค‘๊ฐ„์—์„œ๋„ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ถ”๊ฐ€๋กœ insert์™€ erase๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

lt.insert(iter, k)
- iter๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— ์›์†Œ k๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
- ์‚ฝ์ž…ํ•œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” iterator๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
lt.erase(iter)
- iterator๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
- ๋ฐ˜ํ™˜๊ฐ’์€ ์‚ญ์ œํ•œ ์›์†Œ์˜ ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” iterator๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

[C++] list container ์ •๋ฆฌ ๋ฐ ์‚ฌ์šฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”, BlockDMask ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ STL์˜ sequence container ์˜ vector, deque, list์ค‘ ์„ธ๋ฒˆ์งธ ์ธ list์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ ์ด ์ •๋ง ๋ฅ๊ตฐ์š”. ์ €๋Š” ์‹œ์›ํ•œ ์นดํŽ˜์— ์•‰์•„์„œ ํฌ์ŠคํŒ… ํ•ด๋ณด๋„๋กํ•˜๊ฒ ์Šต๋‹ˆ.

blockdmask.tistory.com

์œ„ ๋ธ”๋กœ๊ทธ์— list container์— ๋Œ€ํ•ด์„œ ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€