Algorithm/Baekjoon

[Algorithm/Baekjoon] ์—๋””ํ„ฐ - 1406 (S2/JAVA)

dpdms2148 2023. 8. 8. 23:24
728x90

๐Ÿ“‘๋ฌธ์ œ๋งํฌ

 

1406๋ฒˆ: ์—๋””ํ„ฐ

์ฒซ์งธ ์ค„์—๋Š” ์ดˆ๊ธฐ์— ํŽธ์ง‘๊ธฐ์— ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ๋ฌธ์ž์—ด์€ ๊ธธ์ด๊ฐ€ N์ด๊ณ , ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ธธ์ด๋Š” 100,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ž…๋ ฅํ•  ๋ช…๋ น์–ด์˜ ๊ฐœ์ˆ˜

www.acmicpc.net

๐Ÿ’ป์ฝ”๋“œ

import java.io.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
import java.util.StringTokenizer;

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> leftStack = new Stack<>();
        Stack<Character> rightStack = new Stack<>();

        String input = br.readLine();
        for (int i = 0; i < input.length(); i++) {
            leftStack.add(input.charAt(i));
        }

        int M = Integer.parseInt(br.readLine());
        for (int i = 0; i < M; i++) {
            String orderLine = br.readLine();

            char order = orderLine.charAt(0);
            if (order == 'L') {// ์ปค์„œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์˜ฎ๊น€ (์ปค์„œ๊ฐ€ ๋ฌธ์žฅ์˜ ๋งจ ์•ž์ด๋ฉด ๋ฌด์‹œ๋จ)
                if(!leftStack.isEmpty()) rightStack.push(leftStack.pop());
            } else if (order == 'D') {// ์ปค์„œ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์˜ฎ๊น€ (์ปค์„œ๊ฐ€ ๋ฌธ์žฅ์˜ ๋งจ ๋’ค์ด๋ฉด ๋ฌด์‹œ๋จ)
                if(!rightStack.isEmpty()) leftStack.push(rightStack.pop());
            } else if (order == 'B') {// ์ปค์„œ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•จ (์ปค์„œ๊ฐ€ ๋ฌธ์žฅ์˜ ๋งจ ์•ž์ด๋ฉด ๋ฌด์‹œ๋จ)
                if(!leftStack.isEmpty()) leftStack.pop();
            } else if (order == 'P') {// $๋ผ๋Š” ๋ฌธ์ž๋ฅผ ์ปค์„œ ์™ผ์ชฝ์— ์ถ”๊ฐ€ํ•จ
                leftStack.push(orderLine.charAt(2));
            }
        }

        while(!leftStack.isEmpty()){
            rightStack.push(leftStack.pop());
        }
        while(!rightStack.isEmpty()){
            bw.write(rightStack.pop());
        }
        
        br.close();
        bw.close();
    }
}

โณํšŒ๊ณ 

  • ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๋ฌธ์ž์—ด ์ค‘๊ฐ„์— ์‚ฝ์ž…, ์‚ญ์ œ, ์ด๋™์ด ์ผ์–ด๋‚˜ List๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ดํ•˜์˜€๋‹ค. List๋ฅผ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ O(N) ์‹œ๊ฐ„์ด ๋“ค์–ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
  • ์‚ฝ์ž…, ์‚ญ์ œ, ์ด๋™ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์„ O(1)๋กœ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ Stack์œผ๋กœ ํ’€์ดํ•˜์˜€๋‹ค.
728x90