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();
}
}