슬기로운 개발생활

[백준] 9093번 단어 뒤집기 자바(Java)

by coco3o
반응형

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

9093번: 단어 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는

www.acmicpc.net


문자열 뒤집기는 다양한 방법으로 문제를 풀 수 있다.
Stack으로 구현하는 방법,
StringBuilder와 StringBuffer의 reverse() 메소드로 구현하는 방법,
반복문을 이용해 거꾸로 출력하기 등

필자는 Stack을 이용해 문제를 풀었다.

정답 코드

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

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));
        int t = Integer.parseInt(br.readLine());

        while (t-- > 0) {
            Stack<Character> stack = new Stack<>();
            String str = br.readLine() +"\n";
            for (char ch : str.toCharArray()) {
                if (ch == ' ' || ch == '\n') {
                    while (!stack.isEmpty()) {
                        bw.write(stack.pop());
                    }
                    bw.write(ch);
                }
                else stack.push(ch);
            }
        }
        bw.flush();
    }
}

설명

문장에서 공백이나 개행을 만나기 전까지 stack에 데이터를 담고,
공백이나 개행을 만났을 때 스택에서 데이터를 꺼내 버퍼에 담는다.
꺼낸 후 현재위치값(공백이나 개행)을 버퍼에 담는다.
-반복-

반응형

블로그의 정보

슬기로운 개발생활

coco3o

활동하기