boj)17413 - 단어 뒤집기 2

2020. 9. 14. 17:51PS/boj

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

public class boj_17413 {
    static Stack<Character> s = new Stack<>();
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) throws IOException {
        char[] chars = br.readLine().toCharArray();
        boolean isTag = false;

        for (char aChar : chars) {
            if (aChar == '<') {
                while (!s.isEmpty()) {
                    sb.append(s.pop());
                }
                sb.append(aChar);
                isTag = true;
            } else if (aChar == '>') {
                sb.append(aChar);
                isTag = false;
            } else if (isTag) {
                sb.append(aChar);
            } else {
                if (aChar == ' ') {
                    while (!s.isEmpty()) {
                        sb.append(s.pop());
                    }
                    sb.append(' ');
                } else {
                    s.push(aChar);
                }
            }
        }

        while (!s.isEmpty()) {
            sb.append(s.pop());
        }
        System.out.println(sb.toString());
    }
}

- 단어 뒤집기 1처럼 스택을 사용

- tag안의 값은 뒤집으면 안되는걸 boolean 으로 체크

- 공백 만나거나 열린 태그일시 지금까지 쌓은 스택 출력

- 마지막 문장이 무시될 수 있으니 다시 sb에 추가 

'PS > boj' 카테고리의 다른 글

boj)17298 - 오큰수  (0) 2020.09.15
boj)10799 - 쇠막대기  (0) 2020.09.14
boj)1158 - 요세푸스 문제  (0) 2020.09.14
boj)1406 - 에디터  (0) 2020.09.14
boj)1874 - 스택 수열  (0) 2020.09.13