본문 바로가기
알고리즘/구현

[백준][JAVA] 17413번 단어 뒤집기 2

by 박뀨뀨 2024. 1. 24.
 

17413번: 단어 뒤집기 2

문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져

www.acmicpc.net

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		char[] S = br.readLine().toCharArray();
		int N = S.length;
		
		Stack<Character> stack = new Stack<>();
		
		int i = 0;
		while (i < N) {
			if (S[i] == ' ') {
				while (!stack.isEmpty()) {
					sb.append(stack.pop());
				}
				sb.append(" ");
			} else if (S[i] == '<') {
				while (!stack.isEmpty()) {
					sb.append(stack.pop());
				}
				while (S[i] != '>') {
					sb.append(S[i]);
					i++;
				}
				sb.append('>');
			} else {
				stack.push(S[i]);
			}
			i++;
		}
		
		while (!stack.isEmpty()) {
			sb.append(stack.pop());
		}
		
		System.out.print(sb);
	}

}
728x90