728x90
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 Main{
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();
Stack<Character> stack = new Stack<>();
String S = br.readLine();
boolean flag = false; // 태그 안 : true , 태그 밖 : false
for(int i=0; i<S.length(); i++){
// '<'을 만남
if(S.charAt(i) == '<'){
flag = true; // '태그 안'임을 알림.
// 스택 모두 pop
while(!stack.isEmpty()){
sb.append(stack.pop());
}
sb.append(S.charAt(i)); // '<' 출력
}
// '>'을 만남
else if(S.charAt(i) == '>'){
flag = false; // '태그 밖'임을 알림
sb.append('>'); // '>' 출력
}
// 태그 안
else if(flag == true){
sb.append(S.charAt(i));
}
// 태그 밖
else if(flag == false){
// 태그 밖에서 공백을 만난 경우
if(S.charAt(i) == ' '){
// 스택 모두 pop
while(!stack.isEmpty()){
sb.append(stack.pop());
}
sb.append(S.charAt(i)); // ' ' 출력
}
else{
stack.push(S.charAt(i));
}
}
}
// 스택 모두 pop
while(!stack.isEmpty()){
sb.append(stack.pop());
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
728x90
'백준 > 코드 플러스 (알고리즘 기초 - 1)' 카테고리의 다른 글
[백준] 201 - 자료구조 1 (연습) : 오큰수 (!) (17298번 JAVA) (0) | 2023.01.06 |
---|---|
[백준] 201 - 자료구조 1 (연습) : 쇠막대기 (!) (10799번 JAVA) (0) | 2023.01.06 |
[백준] 200 - 자료구조 1 : 덱 (!) (10866번 JAVA) (1) | 2023.01.05 |
[백준] 200 - 자료구조 1 : 요제푸스 문제 (!) (1158번 JAVA) (0) | 2023.01.03 |
[백준] 200 - 자료구조 1 : 큐 (10845번 JAVA) (0) | 2023.01.03 |