백준이당

[JAVA] 백준 5430번 : AC

이히당 2023. 7. 12. 15:30

5430번: AC (acmicpc.net)

 

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