키로거

문제 풀러가기

5397

코드

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

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));

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

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

      String result = keyLoger(pwd);
      System.out.println(result);
    }
  }

  public static String keyLoger(String pwd) {
    StringBuilder sb = new StringBuilder();

    Stack<Character> st1 = new Stack<>();
    Stack<Character> st2 = new Stack<>();

    for(int i = 0; i < pwd.length(); i++) {
      switch(pwd.charAt(i)) {
        case '<':
          if(!st1.isEmpty())
            st2.push(st1.pop());
          break;
        case '>':
          if(!st2.isEmpty())
            st1.push(st2.pop());
          break;
        case '-':
          if(!st1.isEmpty())
            st1.pop();
          break;
        default:
          st1.push(pwd.charAt(i));
          break;
      }
    }

    while(!st2.isEmpty()) {
      st1.push(st2.pop());
    }

    for(int i = 0; i < st1.size(); i++) {
      sb.append(st1.elementAt(i));
    }

    return sb.toString();
  }
}

설명

keyLoger를 만드는 문제였다. 입력받은 문자열에서 문자를 구분해서 동작하도록 구현하면된다. 스택을 이용해서 하나는 입력받은 문자열을 저장하고 다른 하나는 임시 저장공간으로 사용했다.