Algorithm

[032] 9093. 단어 뒤집기

JEE-JEEE 2024. 3. 20. 13:43

✨ 알고리즘 분류 : 자료구조

 

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

 

9093번: 단어 뒤집기

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

www.acmicpc.net


 

🪡 문제에서 요구하는 조건 정리

 

1. 문장의 주어졌을 때 문장을 뒤집어서 출력한다.

2. 문장 자체의 구조를 뒤집는 게 아니라, 띄어쓰기 기준의 단어만 뒤집어서 출력해야 한다.

 

 

 

🧶 풀이과정 

 

기본적인 배열의 이해와 문자열의 구조에 대해 알고 있으면 어렵지 않게 풀 수 있는 문제이다. 나의 경우는 우선 입력을 받고, 입력을 받은 토대로 단어를 띄어쓰기 기준으로 나눈다. 2차로는 단어를 글자 기준으로 나누고, 그것을 역순으로 출력하면 되는 아주 쉬운 문제이다.

deque을 사용하여 전부 받은 뒤 큐와 같이 출력하는 형태도 생각해봤지만, 아무래도 현재 방법이 더욱 실행 속도 측면에서 좋을 것 같아 따로 시도는 해보지 않았다. 

 

 

 

🏹 제출코드

 

import java.io.*;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;
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));

        int n = Integer.parseInt(br.readLine());
        //String[] arr = new String[1000];

        for(int i = 0; i < n ; i ++){
            String str = br.readLine();
            String[] arr = str.split(" ");

            for(int j = 0; j < arr.length ; j++){
                String[] sArr = arr[j].split("");

                for(int k = sArr.length-1; k >= 0; k--){
                    bw.write(sArr[k]);
                }

                if(j != arr.length-1) bw.write(" ");
            }

            if(i != n-1) bw.write("\n");

        }

        bw.flush();
        bw.close();
        br.close();

    }
}