1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [G5_5430] AC

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.StringTokenizer;


public class Main {
	static ArrayDeque<Integer> deque;
	static String str, error;
	static int N;
	static StringBuilder sb;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		sb = new StringBuilder();

		// ํ…Œ์ผ€
		int TC = Integer.parseInt(br.readLine());

		for (int t = 0; t < TC; t++) {
			// ํ•จ์ˆ˜ ์ž…๋ ฅ
			str = br.readLine();

			// ์ˆ˜์˜ ๊ฐœ์ˆ˜ ์ž…๋ ฅ
			N = Integer.parseInt(br.readLine());

			// error ์ €์žฅ
			error = "";

			// ArrayList ( ์ˆ˜ ์ €์žฅ ๋ฆฌ์ŠคํŠธ )
			deque = new ArrayDeque<Integer>();
			st = new StringTokenizer(br.readLine(), "[,]");
			for (int i = 0; i < N; i++) {
				deque.add(Integer.parseInt(st.nextToken()));
			}

			go();
		}
		System.out.println(sb);
	}
	static void go() {
		// ์•ž์ธ์ง€ ๋’ค์ธ์ง€ ( ์•ž true, ๋’ค false )
		boolean check = true;

		for(int i=0; i<str.length(); i++) {
			// R ํ•จ์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฐฉํ–ฅ ๋ฐ”๊พธ๊ธฐ
			if(str.charAt(i) == 'R') {
				check = !check;
			}
			// D ํ•จ์ˆ˜ ์ธ ๊ฒฝ์šฐ
			else if(str.charAt(i) == 'D') {
				// ๋ฐฐ์—ด์ด ์ •๋ฐฉํ–ฅ์ธ ๊ฒฝ์šฐ
				if(check) {
					// ํฌ๊ธฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
					if(deque.size()<1) {
						error = "error";
					}else {
						deque.removeFirst();
					}
				}
				// ๋ฐฐ์—ด์ด ๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ
				else {
					// ํฌ๊ธฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
					if(deque.size()<1) {
						error = "error";
					}else {
						deque.removeLast();
					}
				}
			}
		}
		print(check);
	}

	static void print(boolean check) {
		// error ์ธ ๊ฒฝ์šฐ
		if(error.equals("error")) {
			sb.append("error").append("\n");
		}
		// ์•„๋‹Œ ๊ฒฝ์šฐ
		else {
			sb.append("[");
			// ์ •๋ฐฉํ–ฅ์ธ ๊ฒฝ์šฐ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ
			if(check) {
				int a = deque.size();
				for(int i=0; i<a;i++) {
					sb.append(deque.poll());
					// ์‰ผํ‘œ
					if(i != a-1) {
						sb.append(",");
					}
				}
			}
			// ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐ˜๋Œ€๋กœ ์ถœ๋ ฅ
			else {
				int a = deque.size();
				for(int i=0; i<a;i++) {
					sb.append(deque.pollLast());
					// ์‰ผํ‘œ
					if(i != a-1) {
						sb.append(",");
					}
				}
			}
			sb.append("]").append("\n");
		}
	}
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

๋ฌธ์ œ๋Š” ์‰ฝ๊ฒŒ ๋ณด์˜€์ง€๋งŒ .. ์—ญ์‹œ ์‹œ๊ฐ„์ดˆ๊ณผ ..
๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ R ํ•จ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ƒ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
๊ทธ๋ƒฅ ์ด์ค‘ for๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋‹ˆ p์™€ n ๊ฐ’์ด ์ปค์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œฌ๋‹ค.
๊ทธ๋ž˜์„œ ์ƒ๊ฐํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ deque๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
deque๋ฅผ ํ†ตํ•ด R ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋Š” boolean ๊ฐ’์„ ์ด์šฉํ•ด ์•ž์ธ์ง€ ๋’ค์ธ์ง€๋งŒ ์ฒดํฌํ•ด์ฃผ๊ณ  D ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋Š” firstremove() ๊ณผ lastremove()์„ ํ†ตํ•ด ๊ฐ’์„ ์ง€์›Œ์ฃผ๊ณ 
๋‹ค ์ถœ๋ ฅํ•  ๋•Œ๋Š” boolean ๊ฐ’์— ๋”ฐ๋ผ firstpoll()๊ณผ lastpoll()์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: