반응형
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for(int i=0;i<N;i++){
String trans=br.readLine();
int dequeSize = Integer.parseInt(br.readLine());
String input=br.readLine();
Deque<Integer> deque=createDeque(dequeSize,input);
System.out.println(print(deque,trans));
}
}
public static Deque<Integer> createDeque(int size,String input){
Deque<Integer> deque=new ArrayDeque<Integer>();
StringTokenizer st = new StringTokenizer(input.substring(1, input.length() - 1), ",");
for(int i=0;i<size;i++){
deque.add(Integer.parseInt(st.nextToken()));
}
return deque;
}
public static String print(Deque<Integer> deque, String trans) {
boolean isAscending=true;
for (char ch:trans.toCharArray()) {
switch (ch){
case 'R':
isAscending=!isAscending;
break;
case 'D':
if(!deque.isEmpty()) {
if (isAscending) deque.removeFirst();
else deque.removeLast();
}else return "error";
break;
}
}
Iterator<Integer> it = isAscending?deque.iterator():deque.descendingIterator();
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
Integer e = it.next();
sb.append(e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',');
}
}
}
자바 Dueque를 이용하여 구현하였습니다.
테스트 케이스 하나 더 추가해서 테스트 후에 제출하는게 좋을거같습니다.
배열이 없거나 하나일때 R 함수는 에러가 나지 않게 해줘야 합니다.
입력
2
R
0
[]
R
1
[1]
출력
[]
[1]
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[알고리즘] 백준 4153번 직각삼각형 Java (0) | 2021.04.29 |
---|---|
[알고리즘] 백준 6603번 로또 Java (0) | 2021.04.27 |
[알고리즘] 백준 1966번 프린터 큐 Java (0) | 2021.04.22 |
[알고리즘] 백준 11720번 숫자의 합 Java (0) | 2021.04.20 |
[알고리즘] 백준 10950번 A+B - 3 Java (0) | 2021.04.15 |
댓글