[Java] 백준 No.5397 키로거, KeyLogger

hyunsooSong·2023년 1월 26일
0

Baekjoon

목록 보기
2/4

🎄 백준 No.5397 키로거

🔗 https://www.acmicpc.net/problem/5397


1. 문제

2. 입출력

  • 입력 예시
    2
    <<BP<A>>Cd-
    ThIsIsS3Cr3t
  • 출력 예시
    BAPC
    ThIsIsS3Cr3t

3. 문제 풀이

  • Stack Class 사용
  • '<' : 왼쪽 스택에서 오른쪽 스택으로 이동
  • '>' : 오른쪽 스택에서 왼쪽 스택으로 이동
  • '-' : 커서 앞 글자 지우기.

4. 코드

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(br.readLine());

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder answer = new StringBuilder();
        for(int i = 0; i < num; i++) {
            String strText = br.readLine();

            Stack<Character> lStack = new Stack<>();
            Stack<Character> rStack = new Stack<>();
            for(int j = 0; j < strText.length(); j++) {
                char cKey = strText.charAt(j);
                if(cKey == '<') {
                    if(!lStack.empty()) rStack.push(lStack.pop());
                } else if (cKey == '>') {
                    if(!rStack.empty()) lStack.push(rStack.pop());
                } else if (cKey == '-') {
                    if(!lStack.empty()) lStack.pop();
                } else {
                    lStack.push(cKey);
                }
            }

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

            for(int k = 0; k < lStack.size(); k++) {
                answer.append(lStack.elementAt(k));
            }
            answer.append("\n");
        }
        bw.write(String.valueOf(answer));
        bw.flush();
        bw.close();
    }
}
profile
🥕 개발 공부 중 🥕

0개의 댓글