Algorithm/백준 알고리즘

백준_5397 키로거(자바) / 문자열

미스터로즈 2021. 7. 9. 08:37

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

package com.Back;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Back_5397 {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int testCase = Integer.parseInt(br.readLine());
		StringBuilder sb = new StringBuilder();
		char[] str;
		for (int tc = 0; tc < testCase; tc++) {
			str = br.readLine().toCharArray();
			Stack<Character> left = new Stack<Character>();
			Stack<Character> right = new Stack<Character>();

			for (int i = 0; i < str.length; i++) {
				switch (str[i]) {
					case '<':
						if (!left.isEmpty()) {
							right.push(left.pop());
						}
						break;
					case '>': 
						if (!right.isEmpty()) {
							left.push(right.pop());
						}
						break;
					case '-':
						if(!left.isEmpty()) {
							left.pop();
						}
						break;
					default:
						left.push(str[i]);
				}
			}
			
			for(Character c : left) {
				sb.append(c);
			}
			
			while(!right.isEmpty()) {
				sb.append(right.pop());
			}
			sb.append("\n");
		}
		System.out.println(sb);
	}
}

- 이 문제를 풀기 위해서 Stack을 이용했습니다.

 

- for 문을 이용해서 문자열 길이 만큼 돌려줍니다.

 

- 왼쪽과 오른쪽으로 구분하여 특수 문자와 문자들을 처리해줬습니다.