Problem Solving/Baekjoon

[백준] 12605 단어순서 뒤집기 - Data Structure / Java

graycode 2023. 3. 15. 20:29

 문제 링크

 

12605번: 단어순서 뒤집기

스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만

www.acmicpc.net

 

 풀이 과정

각 테스트케이스의 단어를 공백을 기준으로 분리하여 stack에 push하고,

넣은 모든 요소를 pop하여 stack의 LIFO 구조에 의해 각 단어의 순서가 뒤집어 출력된다.

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;

public 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));
        StringTokenizer st;

        int n = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();
        int tc = 1;

        while (n-- > 0) {
            Stack<String> stk = new Stack<>();

            st = new StringTokenizer(br.readLine());
            while (st.hasMoreTokens())
                stk.push(st.nextToken());

            sb.append("Case #").append(tc++).append(": ");
            while (!stk.empty())
                sb.append(stk.pop()).append(" ");
            sb.append("\n");
        }

        bw.write(sb.toString());
        bw.flush();
    }

}