22. 백준 9093번 단어 뒤집기

문제

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

입출력

입력 : 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
출력 : 각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.

아이디어

받은 문자열을 공백 기준으로 나눈 다음, 각 문자열을 거꾸로 출력하도록 하자.

필요한 문법

StringTokenizer : 이 문제에 핵심 역할을 하는 클래스다.
생성자가 StringTOkenizer(bf.readLine(),” “, false)
세번째 요소에 true를 넣으면 구분자를 포함하여 토큰을 자른다!(false면 구분자를 제외한다.)
그리고 다음 토큰이 존재하는 지 확인하려면 **hasNextTokens()**메소드를 사용해야 한다.(hasNext가 아님..)

StringBuilder : String과 달리, 배열의 크기를 여유롭게 생성해 크기를 자유롭게 활용가능.
문자열에 연산을 많이 해야하는 경우 사용하자.
append() 특정값을 추가
delete() 특정값을 삭제

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int testCase = Integer.parseInt(st.nextToken());

for (int i = 0 ; i < testCase ; i++){
StringTokenizer inputStr = new StringTokenizer(bf.readLine()," ",true);
while(inputStr.hasMoreTokens()){
char[] wordChar = inputStr.nextToken().toCharArray();
StringBuilder sb = new StringBuilder();
for (int j = wordChar.length -1 ; j > -1 ; j--){
sb.append(wordChar[j]);
}
System.out.print(sb);
}
System.out.println();
}
}
}
Share