백준 1406번 - 에디터

박진형·2021년 8월 31일
0

algorithm

목록 보기
80/111

문제 풀이

스택을 두개를 사용해서 커서의 왼쪽에 있는 문자, 오른쪽에 있는 문자를 담는다.

커서가 왼쪽으로가면 왼쪽에 있던거를 오른쪽으로 옮기면되고
오른쪽으로 가면 오른쪽에 있던거를 왼쪽으로 옮기면된다.

문제 링크

boj/1406

소스코드

PS/1406.java

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

public class Main {
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));


	public static void main(String[] args) throws IOException {
		String s = br.readLine();
		int N = Integer.parseInt(br.readLine());
		Stack<Character> left = new Stack<>();
		Stack<Character> right = new Stack<>();
		for (int i = 0; i < s.length(); i++) {
			left.add(s.charAt(i));
		}
		for (int i = 0; i < N; i++) {
			String cmd = br.readLine();
			if (cmd.equals("L")) {
				if (!left.empty()) {
					right.add(left.pop());
				}
			} else if (cmd.equals("D")) {
				if (!right.empty())
					left.add(right.pop());
			} else if (cmd.equals("B")) {
				if (!left.empty()) {
					left.pop();
				}
			} else {
				left.add(cmd.charAt(2));
			}
		}
		while (!left.empty()) {
			right.add(left.pop());
		}

		while (!right.empty())
			bw.write(right.pop());
		bw.flush();

	}
	}


0개의 댓글