๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ProgramSolve/Baekjoon

[BOJ] 5397๋ฒˆ - ํ‚ค๋กœ๊ฑฐ (Java)

by SooooooooS 2024. 1. 28.
728x90

๐Ÿ› ๏ธ ๋ฌธ์ œ ๐Ÿ› ๏ธ


๐Ÿ—’๏ธ ์„ค๋ช… ๐Ÿ—’๏ธ

Cursor๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.

์ปค์„œ๊ฐ€ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์— ์ €์žฅ๋  ๋ฌธ์ž๋“ค์ด ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ปค์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ”๋กœ ์™ผ์ชฝ ๋ฌธ์ž์™€ ์˜ค๋ฅธ์ชฝ ๋ฌธ์ž๊ฐ€ ๊ฐ€์žฅ ์œ„์— ์žˆ์–ด ์˜ฎ๊ธฐ๊ธฐ ์‰ฝ๋‹ค.

์ด ๋ฌธ์ œ์—์„œ ๋‚˜๋Š” ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅํ–ˆ๋‹ค.

 

์•„๋ž˜์˜ ๊ทธ๋ฆผ์€ ์ปค์„œ์˜ ์ด๋™๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๋™์ž‘ ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค.

์ปค์„œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•  ๊ฒฝ์šฐ
์ปค์„œ๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•  ๊ฒฝ์šฐ

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์ฃผ์˜ํ•  ์ !

์™ผ์ชฝ ์Šคํƒ์—์„œ ๊ฐ’์„ ๊บผ๋‚ด๋ฉด ๋’ค์ชฝ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋ฏ€๋กœ ๊บผ๋‚ธ ํ›„ ๋’ค์ง‘์–ด์ค€๋‹ค.

์˜ค๋ฅธ์ชฝ ์Šคํƒ์€ ์•ž์ชฝ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.


๐Ÿ€ ํ’€์ด ๐Ÿ€

package Baekjoon;

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

public class Stack5397 {
    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 t = Integer.parseInt(br.readLine());
        while(t > 0) {
            t--;
            String s = br.readLine();
            bw.write(keyLogger(s) + "\n");
        }

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

    static String keyLogger(String s) {
        Stack<Character> left = new Stack<>(); //์ปค์„œ ์™ผ์ชฝ๋ถ€๋ถ„
        Stack<Character> right = new Stack<>(); //์ปค์„œ ์˜ค๋ฅธ์ชฝ๋ถ€๋ถ„
        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            switch (c) {
                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(c);
            }
        }

        StringBuilder sb = new StringBuilder();
        while(!left.isEmpty()) {
            sb.append(left.pop());
        }
        sb.reverse(); //์™ผ์ชฝ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋’ค์ง‘๊ธฐ
        while(!right.isEmpty()) {
            sb.append(right.pop());
        }

        return sb.toString();
    }
}
728x90