BOJ 17413. 단어뒤집기2

1 minute read

BOJ 17413. 단어 뒤집기 2

image image

풀이

단어를 뒤집는 방법은 Stack에 순서대로 push 하고 다시 pop 하여 단어를 뒤집는다.
태그 < or' 'or'\n'를 만나면 만나면 이전까지 Stack에 쌓아놓은 단어들을 모두 pop 한다.

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

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));
        String input = br.readLine() + "\n";

        Stack<Character> stack = new Stack<>();

        boolean isTag = false;

        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);

            if (c == '<') isTag = true;
            if (isTag || c == ' ' || c == '\n') {
                while (!stack.isEmpty()) {
                    bw.write(stack.pop());
                }
                if (c != '\n') bw.write(c);
            } else {
                stack.push(c);
            }
            if (c == '>') isTag = false;
        }
        bw.flush();
        return;
    }
}
import java.lang.StringBuilder
import java.util.*

fun main() {
    val stack = Stack<Char>()
    val sb = StringBuilder()
    var isTag = false
    "${readLine()!!}\n".forEach { c ->
        if (c == '<') isTag = true
        if (isTag || c == ' ' || c == '\n') {
            while (!stack.isEmpty()) {
                sb.append(stack.pop())
            }
            if (c != '\n') sb.append(c)
        } else {
            stack.push(c);
        }
        if (c == '>') isTag = false
    }
    print(sb)
}

풀이소스

github.com/beomjo/algorithm-study/blob/main/BOJ/java/17413.java github.com/beomjo/algorithm-study/blob/main/BOJ/kotlin/17413.kt