본문 바로가기
알고리즘/백준

백준 9093번 - 단어 뒤집기 (Java 8)

by latissimus 2022. 3. 8.

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

 

9093번: 단어 뒤집기

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

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<T; i++){
            st = new StringTokenizer(br.readLine());
            while(st.hasMoreTokens()){
                char[] chArr = st.nextToken().toCharArray();

                for(int j=chArr.length-1; j>=0; j--){
                    sb.append(chArr[j]);
                }
                sb.append(' ');
            }
            sb.append('\n');
        }
        System.out.println(sb);
    }
}

 

생각해보니 스택을 왜 안썼지? 라는 생각에 굳이 스택 추가 -> 속도 두배 느려짐

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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));
        int T = Integer.parseInt(br.readLine());
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();
        Stack<Character> stack = new Stack<>();
        for(int i=0; i<T; i++){
            st = new StringTokenizer(br.readLine());
            while(st.hasMoreTokens()){
                char[] chArr = st.nextToken().toCharArray();

                for(int j=0; j<chArr.length; j++){
                    stack.push(chArr[j]);
                }
                for(int j=0; j<chArr.length; j++) {
                    sb.append(stack.pop());
                }
                sb.append(" ");
            }
            sb.append("\n");
        }
        System.out.println(sb);

    }
}

 

초보입니다. 사소한 것도 지적해주시면 감사하겠습니다.

댓글