๋ฌธ์
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์ ๋ํด์ ์ ์ ๋ฆฌ๋์ด ์์ผ๋ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 10546๋ฒ - ๋ฐฐ๋ถ๋ฅธ ๋ง๋ผํ ๋ (0) | 2022.06.19 |
---|---|
[๋ฐฑ์ค,c++] 5430๋ฒ - AC (0) | 2022.06.19 |
[๋ฐฑ์ค,c++] 18115๋ฒ - ์นด๋ ๋๊ธฐ (0) | 2022.06.19 |
[๋ฐฑ์ค,c++] 1918๋ฒ - ํ์ ํ๊ธฐ์ (0) | 2022.06.03 |
[๋ฐฑ์ค,c++] 2493๋ฒ - ํ (0) | 2022.06.03 |
[๋ฐฑ์ค,c++] 2800๋ฒ - ๊ดํธ ์ ๊ฑฐ (0) | 2022.06.03 |
๋๊ธ