단어 뒤집기 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 |