Baekjoon_9093_단어뒤집기

Baekjoon_9093_단어뒤집기

문제

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

한 줄단위로 문장을 받아서 전부 char형 배열에 넣고 처음부터 stack에 push ' '(공백)이 들어오면 stack에 들어있던거를 전부다 pop하는 방식으로 해결.

마지막 문장은 공백으로 안 끝나기 때문에 반복문 종료후 스택비워주기를 한 번더 실행해 주는 것과 함께 시간을 줄이기 위해서 BufferedWriter도 사용하였다.

package day0930; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Stack; public class Baekjoon_9093_단어뒤집기 { 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 TC = Integer.parseInt(br.readLine()); for (int tc = 1; tc <= TC; tc++) { String str = br.readLine(); char[] arr = str.toCharArray(); Stack stack = new Stack<>(); for (int i = 0; i < arr.length; i++) { if (arr[i] == ' ') { StringBuffer sb = new StringBuffer(); while (!stack.isEmpty()) { sb.append(stack.pop()); } bw.write(sb + " "); continue; } stack.push(arr[i]); } while (!stack.isEmpty()) { bw.write(stack.pop()); } bw.write("

"); } br.close(); bw.flush(); bw.close(); } }

from http://comalgo.tistory.com/61 by ccl(A) rewrite - 2021-10-01 00:27:26