백준이당
[JAVA] 백준 5430번 : AC
이히당
2023. 7. 12. 15:30
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
문제분석
R : 수의 순서 뒤집기
D : 첫번째 요소 지우기
-> 지울 요소 없으면 error
** 공집합이고 R일때 error가 나오지 않게 조심하자
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static int testCase;
public static String[] function;
public static int n;
public static LinkedList<Integer> queue = new LinkedList<>();
public static String[] result;
public static int turn = 0;
public static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
testCase = Integer.parseInt(st.nextToken());
result = new String[testCase];
while(turn < testCase) {
String str = br.readLine();
function = new String[str.length()];
function = str.split("");
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
String raw = br.readLine().replaceAll("[\\[\\]]", "");
// System.out.println(raw);
if (n==0) {
// System.out.println(0);
AC();
queue.clear();
turn++;
// result[turn++] = "error";
continue;
}
String[] arrData = raw.split(",");
for (String data : arrData) {
queue.add(Integer.parseInt(data));
}
// System.out.println(queue.toString());
AC();
queue.clear();
turn++;
}
// System.out.println(99);
System.out.println(sb);
}
public static void AC() {
int run = 0;
boolean front = true;
while(run < function.length) {
// System.out.println(Arrays.toString(function));
//System.out.println(queue.toString());
//System.out.println(88);
switch (function[run]) {
case "R":
front = !front;
break;
case "D":
// System.out.println(queue.toString());
if(queue.isEmpty()) {
// System.out.println("ook");
sb.append("error\n");
return;
}
if(front) {
queue.pollFirst();
} else {
queue.pollLast();
}
break;
}
run++;
}
// System.out.println(queue.toString());
if(front){
// System.out.println("dho");
sb.append("[");
if (queue.isEmpty()) { sb.append("]\n"); return;}
Iterator<Integer> iter = queue.iterator();
while(iter.hasNext()) {
sb.append(iter.next()+",");
}
sb.deleteCharAt(sb.length() - 1).append("]\n");
// result[turn] = queue.toString().replace(" ", "");
} else {
sb.append("[");
if (queue.isEmpty()) { sb.append("]\n"); return;}
else {
ListIterator<Integer> iter = queue.listIterator(queue.size());
while(iter.hasPrevious()) {
sb.append(iter.previous() + ",");
}
sb.deleteCharAt(sb.length() - 1);
sb.append("]\n");
}
}
}
}
728x90