๋ชฉ์ฐจ
1. ๋ฌธ์ ์ค๋ช
2. ์๋ฆฌ ์ค๋ช
3. ์ฝ๋ ๋ถ์
1. ๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/5430
2. ์๋ฆฌ ์ค๋ช
ํด๋น ๋ฌธ์ ๋ deque๋ผ๋ ์๋ฐฉํฅ์์ add, poll์ด ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ์๋ค.
์์ง deque๊ฐ ๋ฏ์ ๋ถ๋ค์ ์ฌ๊ธฐ๋ก ๊ฐ์ ๋ด์ฃผ์ธ์
https://velog.io/@sdk1926/deque%EB%8A%94-%EC%99%9C-%EC%93%B8%EA%B9%8C
toggle(boolean) ๊ฐ์ ๋์๋ค. ๊ทธ๋์ R์ด๋ผ๋ ๋ช ๋ น์ด๊ฐ ๋ค์ด์ค๋ฉด true, false๋ฅผ ํ ๊ธํ๋ค. true๋ ์์ ๊ฐ๋ฆฌํค๊ณ , false๋ ๋ค๋ฅผ ๊ฐ๋ฆฌํจ๋ค. D๋ผ๋ ๋ช ๋ น์ด๊ฐ ๋ค์ด์ค๋ฉด toggle ๋ฐฉํฅ์ ๋ฐ๋ผ ๋จธ๋ฆฌ ํน์ ๊ผฌ๋ฆฌ์์ ๊ฐ์ pollํ๋ค.
ํ ๋ฒ ํ๋ฆฐ ์ด์ : deque๊ฐ ๋น์์ ๋, D ๋ช
๋ น์ด๊ฐ ๋ค์ด์ค๋ฉด error๋ฅผ ์ถ๋ ฅํด์ผํ๊ณ , ๋ช
๋ น์ด๊ฐ ๋ค ๋๋ ๋ค์ ๋ฐฐ์ด์ด ๋น์ด์์ผ๋ฉด ๊ทธ๋๋ก [ ]๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ค. ์ด ๋ถ๋ถ ์์ธ์ฒ๋ฆฌ๋ฅผ ์ํด์ค์ ํ๋ ธ๋ค.
3. ์ฝ๋ ๋ถ์
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Array;
import java.util.*;
// 5430๋ฒ AC
public class Main {
// T: Testcase, p: ๋ช
๋ น์ด์ ๊ฐ์, n: ๋ฐฐ์ด์์ ์์ ๊ฐ์
static int T,n;
// orders: ๋ช
๋ น์ด๊ฐ ์ผ๋ ฌ๋ก ๋ค์ด๊ฐ์๋ ๋ฌธ์์ด
static String orders;
// arr: ์ซ์๊ฐ ๋ค์ด์๋ ๋ฐฐ์ด
static String [] arr ;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(br.readLine());
for (int t = 0; t < T; t++) {
// 1) ๊ฐ ์
๋ ฅ ๋ฐ๊ธฐ
orders = br.readLine();
n = Integer.parseInt(br.readLine());
String temp = br.readLine();
if(temp.equals("[]")){
arr = new String[0];
}else{
arr = temp.substring(1,temp.length()-1).split(",");
}
int isError = 0;
// 2) Deque์ ๋ฃ๊ธฐ
ArrayDeque<String> aq1 = new ArrayDeque<>();
aq1.addAll(Arrays.asList(arr));
// 3) Reverse toggle์ ๋๊ณ R์ด ๋ค์ด์ฌ ๋๋ง๋ค ์์น ๋ฐ๊พธ๊ธฐ
// true -> front, false -> rear
boolean toggle = true;
for (int i = 0; i < orders.length(); i++) {
if(orders.charAt(i) == 'R'){
toggle = !toggle;
}
if(orders.charAt(i) == 'D'){
if(aq1.isEmpty()){
isError = 1;
break;
}
if(toggle){
aq1.pollFirst();
}
else{
aq1.pollLast();
}
}
}
// ์ถ๋ ฅ ๋ถ๋ถ
if(aq1.isEmpty()){
if(isError == 0){
System.out.println("[]");
}else {
System.out.println("error");
}
} else if (!toggle) {
StringBuilder sb = new StringBuilder().append("[");
int Qsize = aq1.size();
for (int i = 0; i < Qsize; i++) {
sb.append(aq1.pollLast());
if(i != Qsize-1){
sb.append(",");
}
}
sb.append("]");
System.out.println(sb);
} else {
StringBuilder sb = new StringBuilder().append("[");
int Qsize = aq1.size();
for (int i = 0; i < Qsize; i++) {
sb.append(aq1.poll());
if(i != Qsize-1){
sb.append(",");
}
}
sb.append("]");
System.out.println(sb);
}
}
}
}