본문 바로가기

PROGRAMMING/ALGORITHM

[백준] 17413번 JAVA

단어 뒤집기 2

- 괄호가 열리면 StringBuilder에 바로 때려넣고

- 괄호가 닫히면 StackFlag = true

- 괄호 외 일반문자가 들어오면 Stack에 때려넣고

- 괄호가 열리거나 문자열 만큼 도는 for루프가 끝나면 isEmpty가 될때까지 pop

 

import java.io.*;
import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.ArrayBlockingQueue;

public class Main {
    public static void main(String args[]) throws IOException, InterruptedException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        String input = reader.readLine();
        StringBuilder sb = new StringBuilder();
        boolean isReverseFlag = true;
        Stack<String> reverseStack = new Stack<>();

        for(int i = 0; i < input.length(); i++){
            String target = input.substring(i, i+1);
            if(isReverseFlag == true && target.equals("<")){
                isReverseFlag = false;
                while(!reverseStack.isEmpty()){
                    sb.append(reverseStack.pop());
                }
            }else if(isReverseFlag == true && target.equals(" ")){
                while(!reverseStack.isEmpty()){
                    sb.append(reverseStack.pop());
                }
            }
            if(target.equals(" ") || !isReverseFlag){
                sb.append(target);
            }else if(isReverseFlag){
                reverseStack.push(target);
            }

            if(target.equals(">")){
                isReverseFlag = true;
            }
        }
//        나머지 남아있던거 다 입력
        while(!reverseStack.isEmpty()){
            sb.append(reverseStack.pop());
        }

        writer.write(sb.toString() + "\n");
        reader.close();
        writer.flush();
        writer.close();
    }
}

'PROGRAMMING > ALGORITHM' 카테고리의 다른 글

[백준] 17298번 JAVA  (0) 2021.04.11
[백준] 10799번 JAVA  (0) 2021.04.02
[백준] 1158번 JAVA 요세푸스  (0) 2021.03.31
[백준] 1406번 JAVA  (0) 2021.03.30
[백준] 9012번 JAVA  (0) 2021.03.29