문제 풀이/백준

[백준] 12605번. 단어순서 뒤집기 (JAVA)

27200 2024. 2. 5. 14:41

https://www.acmicpc.net/problem/12605


문제


풀이

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

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

        StringBuilder[] results = new StringBuilder[N];
        
        for(int i = 0; i < N; i++) {
            String input = br.readLine();
            String[] arr = input.split(" ");
            StringBuilder sb = new StringBuilder();
            for (int j = 0; j < arr.length; j++)
                stack.push(arr[j]);

            while (!stack.isEmpty()) {
                sb.append(stack.pop()).append(" ");
            }
            results[i] = sb;
        }
        
        for (int i = 0; i < N; i++) {
            System.out.println("Case #" + (i + 1) + ": " + results[i]);
        }
    }
}


시간제한이 5초로 넉넉한 문제였기 때문에 배열에 저장한 뒤에 역순으로 꺼내는 단순한 방법을 사용할 수도 있었다.

다만, 스택이라는 자료구조를 사용해보고 싶어 고민을 했다.


문제는 스택을 사용할 경우 한 줄에 한 번씩 출력되는 문제가 있었다. 예를 들어, 케이스 1을 입력하면 바로 역순으로 출력되는 등의 문제였다. 물론 이렇게 해도 해결은 되었지만 한 번에 출력되는 형식으로 변경하고 싶어 StringBuilder 클래스를 사용하여 한번에 출력될 수 있게 변경하였다.