본문 바로가기

백준 풀이

백준 9093 - 단어 뒤집기

깃허브:

https://github.com/MSIQOC/BOJ/blob/master/b9093_%EB%8B%A8%EC%96%B4%EB%92%A4%EC%A7%91%EA%B8%B0.java

 

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

 

9093번: 단어 뒤집기

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

www.acmicpc.net

 

넣은 순서의 반대로 출력되는 스택의 성질을 이용해서 아주 간단하게 구현할 수 있는 문제였다.

코드에서는 케이스 개수를 n으로 정해주고, 입력받은 문장에서 한글자씩 스택에 넣을 때 다음으로 스택에 들어올 단어가 스페이스이면 그동안 스택에 있었던 모든 글자를 되려 스택에서 빼내도록 했다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;
import java.io.*;
public class b9093_´Ü¾îµÚÁý±â {
    public static void main(String args[]) throws IOException {
        Scanner sc = new Scanner(System.in);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = sc.nextInt();
        sc.nextLine();
        Stack<Character> stack = new Stack<>();
        for(int i=0 ;i<n; ++i) {
            String s = sc.nextLine();
            for(int j=0; j<s.length(); ++j) {
                if(s.charAt(j)==' ') {
                    while(!stack.empty())
                        bw.write(stack.pop());
                    bw.write(' ');
                }
                else
                    stack.push(s.charAt(j));
            }
            while(!stack.empty())
                bw.write(stack.pop());
            bw.write("\n");
        }
        bw.flush();
    }
}
 
 

'백준 풀이' 카테고리의 다른 글

백준 9012 - 괄호  (0) 2021.01.10
백준 17413 - 단어뒤집기 2  (0) 2021.01.09
백준 10866 - 덱  (0) 2021.01.06
백준 10845-큐  (0) 2021.01.04
백준 10828번 - 스택  (0) 2021.01.04