본문 바로가기

알고리즘/스택

9093번 단어 뒤집기

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 Main {
	// 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어
	// 알파벳으로만 이루어져 있다.
	static Stack<Character> stack = new Stack<Character>();
	static String resultValue = "";

	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
				System.out));
		String tempCase = null;
		int testCase = 0;
		try {
			tempCase = br.readLine();
			testCase = Integer.parseInt(tempCase);
			String tempSentense = "";
			StringBuffer sf = new StringBuffer();
			for (int t = 0; t < testCase; t++) {
				stack.clear();
				sf.setLength(0);
				tempSentense = br.readLine();
				for (int i = 0; i < tempSentense.length(); i++) {
					//공백일 경우에 출력
					if (tempSentense.charAt(i) == " ".charAt(0)) {
						while (!stack.empty()) {
							sf.append(stack.pop());
						}
						sf.append(" ");
					}else{//공백이 아니면 push
						stack.push(tempSentense.charAt(i) ) ;
					}
				}
				//마지막 남은 문장 출력
				while (!stack.empty()) {
					sf.append(stack.pop());
				}
				bw.write(sf.toString()+ "\n");
				bw.flush();
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (bw != null) {
				try {
					bw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

}

'알고리즘 > 스택' 카테고리의 다른 글

1406번 에디터  (0) 2020.06.21
1894번 스택수열  (0) 2020.06.21
9012번 괄호  (0) 2020.06.11
10828번 스택  (0) 2020.06.07