본문 바로가기
백준

[백준] 9093번 : 단어 뒤집기 – JAVA [자바]

by Hongwoo 2022. 9. 17.
반응형

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

 

9093번: 단어 뒤집기

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

www.acmicpc.net

 


  • 문제

 


  • 문제 풀이

백준 9093번 단어 뒤집기는 브론즈 1 난이도의 구현 및 문자열 문제이다. 이 문제에서는 n개의 문장이 주어진다. 이때, 장의 단어를 모두 뒤집어 출력하면 된다.

 

이 문제는 StringBuilder 클래스에 있는 reverse() 함수를 쓰면 수월하게 풀 수 있다. reverse() 함수는 StringBuilder에 있는 것들을 뒤집어서 반환하는 함수다. 즉, 문제에서 주어지는 문장을 먼저 입력받는다. 그리고 StringTokenizer를 이용하면 각 문장에 있는 단어들을 나눌 수 있다. 따라서, 문제 예시처럼 I am happy today 같은 문장이 주어지면 "I", "am", "happy"와 "today"로 나눠진다는 것이다.

 

이 단어들을 StringBuilder 형태로 변환시키고 reverse 함수를 적용하면 다음과 같이 나눠진다: "I", "ma", "yppah"와 "yadot". 따라서 이 단어들을 공백으로 나눈 뒤 출력만 해주면 된다. 

 

자세한 코드는 아래에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());  //n 입력받기
        StringBuilder answer = new StringBuilder();  //최종 출력할 StringBuilder
        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            while (st.hasMoreTokens()) {
                StringBuilder sb = new StringBuilder(st.nextToken());
                answer.append(sb.reverse() + " ");  //각 단어를 뒤집고 answer에 붙이기
            }
            answer.append("\n");
        }
        System.out.print(answer);
    }
}

 

 

반응형

댓글