문제
9093번: 단어 뒤집기
접근
- 문자열 한 줄을 입력 받으면 공백을 기준으로 토큰을 잘라 토큰의 순서는 그대로, 토큰 안의 내용만 역순으로 출력하도록 한다.
- 출력 시 토큰 다음엔 공백으로 구분을 지으며 출력을 해아 함.
내 코드
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = Integer.parseInt(sc.nextLine());
StringBuilder result = new StringBuilder();
for (int i = 0; i < count; i++) {
String sentence = sc.nextLine() + "\n";
Stack<Object> stack = new Stack<>();
for (int j = 0; j < sentence.length(); j++) {
if (sentence.charAt(j) == ' ' || sentence.charAt(j) == '\n') {
while (!stack.empty()) {
result.append(stack.pop());
}
result.append(sentence.charAt(j));
}
else {
stack.add(sentence.charAt(j));
}
}
}
System.out.print(result.toString());
}
}
- 공백을 기준으로 토큰을 구분하는 조건을 잡는다.
- input 문자열에 대해 루프를 돌 때, i번째 문자가 공백이 아니라면 stack에 넣는다. 이는 후에
pop
연산을 통해 역순으로 만들기 위함이다.
StringBuilder
를 사용하는 것이 String
을 사용해서 출력하는 것보다 더 효율적이다.