https://www.acmicpc.net/problem/5397
๋ฌธ์
์ฐฝ์์ด๋ ๊ฐ์ฐ์ด์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์น๊ธฐ ์ํด์ ๊ฐ์ฐ์ด๊ฐ ์ฌ์ฉํ๋ ์ปดํจํฐ์ ํค๋ก๊ฑฐ๋ฅผ ์ค์นํ๋ค. ๋ฉฐ์น ์ ๊ธฐ๋ค๋ฆฐ ๋์ ์ฐฝ์์ด๋ ๊ฐ์ฐ์ด๊ฐ ๋น๋ฐ๋ฒํธ ์ฐฝ์ ์ ๋ ฅํ๋ ๊ธ์๋ฅผ ์ป์ด๋๋ค.
ํค๋ก๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ํค๋ณด๋๋ฅผ ๋๋ฅธ ๋ช ๋ น์ ๋ชจ๋ ๊ธฐ๋กํ๋ค. ๋ฐ๋ผ์, ๊ฐ์ฐ์ด๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ ๋, ํ์ดํ๋ ๋ฐฑ์คํ์ด์ค๋ฅผ ์ ๋ ฅํด๋ ์ ํํ ๋น๋ฐ๋ฒํธ๋ฅผ ์์๋ผ ์ ์๋ค.
๊ฐ์ฐ์ด๊ฐ ๋น๋ฐ๋ฒํธ ์ฐฝ์์ ์ ๋ ฅํ ํค๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฐ์ด์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๊ฐ์ฐ์ด๋ ํค๋ณด๋๋ก ์ ๋ ฅํ ํค๋ ์ํ๋ฒณ ๋๋ฌธ์, ์๋ฌธ์, ์ซ์, ๋ฐฑ์คํ์ด์ค, ํ์ดํ์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ฐ์ฐ์ด๊ฐ ์ ๋ ฅํ ์์๋๋ก ๊ธธ์ด๊ฐ L์ธ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. (1 ≤ L ≤ 1,000,000) ๊ฐ์ฐ์ด๊ฐ ๋ฐฑ์คํ์ด์ค๋ฅผ ์ ๋ ฅํ๋ค๋ฉด, '-'๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ ์ปค์์ ๋ฐ๋ก ์์ ๊ธ์๊ฐ ์กด์ฌํ๋ค๋ฉด, ๊ทธ ๊ธ์๋ฅผ ์ง์ด๋ค. ํ์ดํ์ ์ ๋ ฅ์ '<'์ '>'๋ก ์ฃผ์ด์ง๋ค. ์ด๋๋ ์ปค์์ ์์น๋ฅผ ์์ง์ผ ์ ์๋ค๋ฉด, ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ์ผ๋ก 1๋งํผ ์์ง์ธ๋ค. ๋๋จธ์ง ๋ฌธ์๋ ๋น๋ฐ๋ฒํธ์ ์ผ๋ถ์ด๋ค. ๋ฌผ๋ก , ๋์ค์ ๋ฐฑ์คํ์ด์ค๋ฅผ ํตํด์ ์ง์ธ ์๋ ์๋ค. ๋ง์ฝ ์ปค์์ ์์น๊ฐ ์ค์ ๋ง์ง๋ง์ด ์๋๋ผ๋ฉด, ์ปค์ ๋ฐ ์ปค์ ์ค๋ฅธ์ชฝ์ ์๋ ๋ชจ๋ ๋ฌธ์๋ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋ํ๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด์, ๊ฐ์ฐ์ด์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค. ๋น๋ฐ๋ฒํธ์ ๊ธธ์ด๋ ํญ์ 0๋ณด๋ค ํฌ๋ค.
ํ์ด
#include <iostream>
#include <list>
using namespace std;
int main() {
int n;
cin >> n;
while (n--){
string input;
cin >> input;
list <char> L;
auto cursor = L.begin();
for(char c : input) {
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(char c : L) cout << c;
cout << "\n";
}
return 0;
}
TIL
list์ insert ์ erase ์ ๊ฐ๋ ์ ๋ช ํํ๊ฒ ์๊ณ ๊ฐ์ง ์์์ ์ด๋ฐ์ ์ค๋ฅ๊ฐ ๋ฌ์๋ค
insert ๋ iterator ์ ์์ ์์๋ฅผ ์ฝ์ ํ๋๊ฒ,
erase๋ iterator ๊ฐ ๊ฐ๋ฆฌํค๋ ์์๋ฅผ ์ญ์ ํ๋ ๊ฒ,
์ฆ, ํน์ ์์๋ฅผ insert ํ๊ณ ๋ฐฉ๊ธ insert ํ ์์๋ฅผ ์ญ์ ํ๊ณ ์ถ๋ค๋ฉด, iterator--๋ฅผ ํด์ผ ์ค๋ฅ์์ด ์ํ๋ ๋์ ์ญ์ ํ ์ ์๋ค
'๐ Baaaaaarking > 0x04๊ฐ - ์ฐ๊ฒฐ๋ฆฌ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํคํค ๊ธฐ์ฌํ๋ค] ๋ฐฑ์ค 1158๋ฒ : ์์ธํธ์ค ๋ฌธ์ (0) | 2022.01.06 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1406๋ฒ : ์๋ํฐ (0) | 2021.12.30 |