에디터

문제 풀러가기

1406

코드

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

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

    Stack<Character> lStack = new Stack<Character>();
    Stack<Character> rStack = new Stack<Character>();

    String str = br.readLine();
    for(int i = 0; i < str.length(); i++) {
      lStack.push(str.charAt(i));
    }

    String nStr = br.readLine();
    int n = Integer.parseInt(nStr);

    for(int i = 0; i < n; i++) {
      String cmd = br.readLine();

      if(cmd.startsWith("L")) {
        if(!lStack.empty()) {
          rStack.push(lStack.pop());
        }
      } else if(cmd.startsWith("D")) {
        if(!rStack.empty()) {
          lStack.push(rStack.pop());
        }
      } else if(cmd.startsWith("B")) {
        if(!lStack.empty()) {
          lStack.pop();
        }
      } else if(cmd.startsWith("P")) {
        String[] pCmd = cmd.split(" ");
        lStack.push(pCmd[1].toCharArray()[0]);
      }
    }

    while(!lStack.empty()) {
      rStack.push(lStack.pop());
    }

    while(!rStack.empty()) {
      bw.write(rStack.pop());
    }

    br.close();
    bw.flush();
    bw.close();
  }
}

설명

스택을 활용하는 문제이다. 처음 입력받은 문자열을 스택에 나눠서 입력한 후 입력된 명령어에 따라 스택에서 문자를 꺼내고 넣는 것을 수행한다. lStack에 문자를 담아 명령을 다 수행한 후에는 rStack에 담아서 정리한 후 차례로 출력한다.