Algorithm

자료구조 / 백준 17413 단어 뒤집기 2

Dear-J 2025. 4. 7. 21:13

 

풀이

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

public class S17413 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        String S = br.readLine();
        int len = S.length();
        Stack<Character> stack = new Stack<>();

        boolean tag = false;

        for (int i = 0; i < len; i++) {
            if(S.charAt(i) == '<'){
                tag = true;
                while (!stack.isEmpty()) {
                    sb.append(stack.pop());
                }
                sb.append(S.charAt(i));
            } else if (S.charAt(i) == '>') {
                tag = false;
                sb.append(S.charAt(i));
            } else if (tag) {
                sb.append(S.charAt(i));
            } else if (!tag) {
                if (S.charAt(i) == ' ') {
                    while (!stack.isEmpty()) {
                        sb.append(stack.pop());
                    }
                    sb.append(S.charAt(i));
                } else {
                    stack.push(S.charAt(i));
                }
            }
        }
        while (!stack.isEmpty()) {
            sb.append(stack.pop());
        }
        System.out.println(sb);
    }
}

 

boolean 변수 tag를 사용해서 이 문자열이 태그의 내부인지 외부인지를 판별

 

stack을 사용해서 <를 만나거나 공백일 경우에 꺼내서 문자를 뒤집어 출력