코테/문제풀이

[백준]17413번 단어뒤집기 자바 정답 코드

내가 그린 코딩 그림 2023. 11. 15. 15:59
반응형

백준 17413번 단어뒤집기 자바 정답 코드


1. 정방향 글자  -> Queue사용

2. 역방향 글자 -> Stack사용

3. char를 더하는 경우가 잦아서 불변 객체인 String 대신 가변객체인 StringBuilder 사용


package bakjun.string;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

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

        boolean openCheck = false;
        Queue<Character> q = new LinkedList<>();
        Stack<Character> st = new Stack<Character>();
        for (int i=0; i<input.length(); i++) {
            char a = input.charAt(i);

            // 꺽새 시작과 끝
            if (a == '<') {
                while(!st.isEmpty()) {
                    answer.append(st.pop());
                }
                openCheck = true;
                q.offer(a);
                continue;
            }
            else if (openCheck) {
                q.offer(a);
                if (a == '>') {
                    while (!q.isEmpty()) {
                        answer.append(q.poll());
                    }
                    openCheck = false;
                }
                continue;
            }

            if (a == ' ') {
                while(!st.isEmpty()) {
                    answer.append(st.pop());
                }
                answer.append(' ');
            } else {
                st.push(a);
            }

            if (i == input.length()-1) {
                while(!st.isEmpty()) {
                    answer.append(st.pop());
                }
            }
        }

        System.out.println(answer);
    }
}
반응형