๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 27497_์•ŒํŒŒ๋ฒณ ๋ธ”๋ก

๋ฟŒ์•ผ._. 2023. 11. 24. 15:47

Silver II

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/27497)

< ์•ŒํŒŒ๋ฒณ ๋ธ”๋ก >

 

๋ฌธ์ œ ํ’€์ด 

 

deque์™€ stack์„ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค. deque์—๋Š” ๋ฌธ์ž์—ด์„ ๋„ฃ๊ณ , stack์—๋Š” ๋ฌธ์ž์—ด์„ ์•ž์— ๋„ฃ์—ˆ๋Š”์ง€ ๋’ค์— ๋„ฃ์—ˆ๋Š”์ง€ ํŒ๋ณ„ํ•˜๋„๋ก ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Stack;
import java.util.StringTokenizer;

public class _27497_ { // ์•ŒํŒŒ๋ฒณ ๋ธ”๋ก

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		Deque<Character> deque = new ArrayDeque<>();
		Stack<Boolean> stack = new Stack<>();

		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());

			int cmd = Integer.parseInt(st.nextToken());

			if (cmd == 1 || cmd == 2) {
				char x = st.nextToken().charAt(0);
				if (cmd == 1) {
					stack.add(false);
					deque.addLast(x);
				} else {
					stack.add(true);
					deque.addFirst(x);
				}
			} else {
				if (deque.isEmpty()) {
					continue;
				}
				boolean flag = stack.pop();
				if (flag) {
					deque.removeFirst();
				} else {
					deque.removeLast();
				}
			}
		}

		if (deque.isEmpty()) {
			bw.write("0");
		} else {
			while (!deque.isEmpty()) {
				bw.write(deque.pollFirst());
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํšŸ์ˆ˜
deque : ๋ฌธ์ž์—ด ๊ตฌ์„ฑํ•˜๋Š” ๋ธ”๋ก ์ €์žฅ
stack : ๋ฌธ์ž์—ด์„ ์•ž์— ์ถ”๊ฐ€ํ–ˆ๋Š”์ง€ ๋’ค์— ์ถ”๊ฐ€ํ–ˆ๋Š”์ง€ ์ €์žฅ
cmd : 1(๋ฌธ์ž์—ด ๋งจ ๋’ค์— ์ถ”๊ฐ€), 2(๋ฌธ์ž์—ด ๋งจ ์•ž์— ์ถ”๊ฐ€), 3 (๊ฐ€์žฅ ๋‚˜์ค‘์— ์ถ”๊ฐ€๋œ ๋ธ”๋ก ์ œ๊ฑฐ)
x : ๋ฌธ์ž์—ด

 

1์„ ์ž…๋ ฅ๋ฐ›์€ ๊ฒฝ์šฐ deque์˜ addLast๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งจ ๋’ค์— ์ถ”๊ฐ€ํ•˜๊ณ , 2๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ๊ฒฝ์šฐ deque์˜ addFirst๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งจ ์•ž์— ์ถ”๊ฐ€ํ•œ๋‹ค. 3์„ ์ž…๋ ฅ๋ฐ›์€ ๊ฒฝ์šฐ stack์—์„œ ๊ฐ’์„ ํ•˜๋‚˜ ๊บผ๋‚ด์™€ ๊ฐ’์ด false๋ผ๋ฉด removeLast๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งจ ๋’ค ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ , true๋ผ๋ฉด removeFirst๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งจ ์•ž์˜ ๊ฐ’์„ ์ œ๊ฑฐํ•œ๋‹ค.

 

์ตœ์ข… deque๊ฐ€ ๋น„์—ˆ๋‹ค๋ฉด 0์„ ์ถœ๋ ฅํ•˜๊ณ  ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด deque์—์„œ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด ์ถœ๋ ฅํ•œ๋‹ค.