본문 바로가기
코딩테스트

[백준] 5430번 'AC' - Java

by CuckooBird 2023. 8. 21.

https://www.acmicpc.net/problem/5430

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net


문제


코드

import java.io.*;
import java.util.*;

public class Main {
	private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
	private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	
	public static void main(String[] args) throws IOException {
		int t = Integer.parseInt(bf.readLine());
		while(t > 0) {
			t--;
			boolean err = false;
			
			String p = bf.readLine();
			int n = Integer.parseInt(bf.readLine());
            // StringTokenizer 을 이용한 입력 (두번째 인자는 구분자)
			StringTokenizer st = new StringTokenizer(bf.readLine(), "[],");
			Deque<Integer> deque = new ArrayDeque<>();
			
			for(int i = 0 ; i < n ; i++) {
				deque.add(Integer.parseInt(st.nextToken()));
			}
			
			int r = 0;
			for(int i = 0 ; i < p.length() ; i++) {
				if(p.charAt(i) == 'R') {
					r++;
				}
				else {
					n--;
                    // 덱이 비었음
					if(n < 0) {
						err = true;
						break;
					}
                    // 뒤집기 짝수면 덱 순서가 그대로이므로 pollFirst
					if(r % 2 == 0) {
						deque.pollFirst();
                    // 뒤집기 홀수면 덱 순서가 반대이므로 pollLast
					} else {
						deque.pollLast();
					}
				}
			}
			
			if(err) {
				bw.write("error\n");
				continue;
			}
			
			bw.write("[");
			if(r % 2 == 0) {
				while(!deque.isEmpty()) {
					bw.write(deque.pollFirst() + "");
					if(deque.size() > 0) {
						bw.write(",");
					}
				}
			} else {
				while(!deque.isEmpty()) {
					bw.write(deque.pollLast() + "");
					if(deque.size() > 0) {
						bw.write(",");
					}
				}
			}
			bw.write("]\n");
		}
		
		bf.close();
		bw.flush();
		bw.close();
	}
}