728x90
1. 문제
2. 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class BOJ_5430_AC {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(in.readLine());
StringBuilder sb = new StringBuilder();
while (T-->0) {
//입력
String P = in.readLine();
int N = Integer.parseInt(in.readLine());
Deque<Integer> deque = new ArrayDeque<>();
StringTokenizer st = new StringTokenizer(in.readLine(), "[|]|,");
while (st.hasMoreTokens()) {
deque.offer(Integer.parseInt(st.nextToken()));
}
//탐색
boolean isR = true;
boolean error = false;
for (int i = 0; i < P.length(); i++) {
if (error) break;
switch (P.charAt(i)) {
case 'R':
isR = !isR;
break;
case 'D':
if (deque.isEmpty()) error = true;
else if (isR) deque.poll();
else deque.pollLast();
break;
}
}
//출력
if(error) {
sb.append("error\n");
continue;
}
sb.append("[");
while(!deque.isEmpty()) {
if (isR) sb.append(deque.poll());
else sb.append(deque.pollLast());
if(deque.size()>=1) sb.append(",");
}
sb.append("]\n");
}
System.out.print(sb);
}
}
다 풀었는데 마지막에 출력에서 자꾸 이상하게 나와서 15분동안 그것만 찾고 있었다. error일 때 continue를 써야하는데 break를 써버린 게 문제였다.
문제 자체는 방향을 파악하는 isR변수와 error변수를 활용해서 쉽게 풀었다.
3. 결과
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 2309 일곱난쟁이 - JAVA (0) | 2022.02.09 |
---|---|
[BOJ] 2493 탑 - JAVA (0) | 2022.02.07 |
[BOJ] 1021 회전하는 큐 - JAVA (0) | 2022.02.07 |
[BOJ] 10866 덱 - JAVA (0) | 2022.02.07 |
[BOJ] 1966 프린터큐 - JAVA (0) | 2022.02.07 |
댓글