[9093] 단어 뒤집기

HeeSeong·2021년 7월 13일
0

백준

목록 보기
29/79
post-thumbnail

🔗 문제 링크

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


❔ 문제 설명


문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.

각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.


⚠️ 제한사항


  • 첫째 줄에 테스트 케이스의 개수 T가 주어진다.

  • 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다.

  • 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다

  • 단어와 단어 사이에는 공백이 하나 있다.



💡 풀이 (언어 : Java)


전체를 뒤집는게 아니고 단어들을 뒤집어 순서대로 붙여야 하므로 밖에 StringBuilder를 선언해주고 안에서도 StringBuilder를 선언하고 reverse() 메서드를 사용하고 밖의 StringBuilder에 붙여서 문장을 완성했다. 자바에서 String은 Immutable한 객체이므로 자꾸 변하는 값을 연산하게 되면 성능적으로 손해이다. 가변적인 String은 StringBuilder와 StringBuffer를 사용하는데, 동기화 문제가 없다면 StringBuilder를 사용하는 것이 더 빠르고 효율적이다.

public class Main {
    private static void reverseWord(String input) {
        String[] wordList = input.split(" ");
        StringBuilder sentenceBuilder = new StringBuilder();
        for (String word : wordList) {
            StringBuilder wordBuilder = new StringBuilder(word);
            sentenceBuilder.append(wordBuilder.reverse() + " ");
        }
        System.out.println(sentenceBuilder);
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            reverseWord(br.readLine());
        }
    }
}
profile
끊임없이 성장하고 싶은 개발자

0개의 댓글