백준 문제풀이

17413. 단어 뒤집기 2 (자바, Java)

뮤츠 2022. 11. 20. 01:59

쉽지만 어려웠던...문제라고 해야하나,

창의력이 모자라서, 풀이 힌트 보고 만들어서 풀었습니다. 코드까지 본건 아니지만, 자력으로는 해결 못한셈...

핵심은 태그 상태 및 공백이 있으면 그대로 입력, 그 외의 경우는 공백이나 <가 나올때까지 스택에 쌓았다가 한번에 pop으로 방출하는 것.

 

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

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		Stack <Character> stack = new Stack<>();
		StringBuilder sb = new StringBuilder();
		boolean tag = false;
		for (int i=0; i<str.length(); i++) {
			char ch = str.charAt(i);
			if (ch=='<') {
				while (!stack.isEmpty()) {
					sb.append(stack.peek());
					stack.pop();
				}
				tag = true;
				sb.append('<');
			} else if (ch==' ') {
				while (!stack.isEmpty()) {
					sb.append(stack.peek());
					stack.pop();
				}
				sb.append(' ');
			} else if (ch=='>') {
				tag = false;
				sb.append('>');
			} else if (tag) {
				sb.append(ch);
			} else {
				stack.push(ch);
			} 
			
			if (i==str.length()-1) {
				while (!stack.isEmpty()) {
					sb.append(stack.peek());
					stack.pop();
				}
			}
		}
		System.out.println(sb);
	}

}

'백준 문제풀이' 카테고리의 다른 글

17298. 오큰수 (자바, Java)  (0) 2022.11.20
10799. 쇠막대기 (자바, Java)  (0) 2022.11.20
10866. 덱 (자바, Java)  (0) 2022.11.05
1158. 요세푸스 문제 (자바, Java)  (0) 2022.11.05
10845. 큐 (자바, Java)  (0) 2022.11.05