반응형
reverse 연산 시간을 줄이기 위해서 커서를 두었습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i=0; i<T; i++){
boolean error = false, cursor = false; // false : front, true : back
String[] fn = br.readLine().split("");
br.readLine();
String input = br.readLine();
ArrayList<String> list = new ArrayList<>(Arrays.asList(input.substring(1, input.length()-1).split(",")));
if (list.get(0).equals("")) list.remove(0);
for (String f : fn){
switch (f){
case "R": cursor = !cursor; break;
case "D":
if (list.size()==0) {
error = true;
break;
} else if (cursor) list.remove(list.size()-1);
else list.remove(0);
}
}
if (cursor) Collections.reverse(list);
sb.append(error ? "error\n" : "["+String.join(",", list)+"]\n");
}
System.out.print(sb);
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 10799번 쇠막대기 [ Java ] (0) | 2020.12.28 |
---|---|
백준 4889번 안정적인 문자열 [ Java ] (0) | 2020.12.28 |
백준 6198번 옥상 정원 꾸미기 [ Java ] (0) | 2020.12.27 |
백준 2493번 탑 [ Java ] (0) | 2020.12.26 |
백준 1158번 요세푸스 문제 [ Java ] (0) | 2020.12.25 |