백준 알고리즘

12. 17413번 단어뒤집기2

Romenest 2021. 9. 13. 10:00

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 training {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringBuilder sb = new StringBuilder();
		String string = br.readLine();
		Stack<Character> stack = new Stack<>();

		boolean tag = false;

		for (int i = 0; i < string.length(); i++) {
			char c = string.charAt(i);

			// <> 태그 안의 내용 담기
			if (c == '<') {
				while (!stack.isEmpty()) {
					sb.append(stack.pop());
				}
				tag = true;
				sb.append(c);
			} else if (c == '>') {
				tag = false;
				sb.append(c);
			} else if (c == ' ') {
				while (!stack.isEmpty()) {
					sb.append(stack.pop());
				}
				sb.append(c);
			} else if (tag) {
				sb.append(c);
			}
			// <> 태그 밖 즉, 실질적으로 뒤집을 내용들
			else {
				stack.push(c);
			}

		}
		while (!stack.isEmpty()) {
			sb.append(stack.pop());
		}

		bw.write(sb.toString());
		bw.flush();
		bw.close();

	}
}

 

결과