728x90
300x250
https://www.acmicpc.net/problem/17413
<Java 코드>
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//System.setIn(new FileInputStream("Test.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder newStr = new StringBuilder();
Stack<Character> stack = new Stack<Character>();
boolean isOpen = false;
for (int i = 0; i < str.length(); i++) {
//여는 괄호이거나 여는괄호중이 아닌상태에서 공백이 나오면 현재 스택에 있는 단어 배출
if (str.charAt(i) == '<' || (str.charAt(i) == ' ' && !isOpen)) {
if (!stack.isEmpty()) {
while (!stack.isEmpty()) {
newStr.append(stack.pop());
}
}
newStr.append(str.charAt(i));
if (str.charAt(i) == '<')
isOpen = true;
continue;
}
if (str.charAt(i) == '>') {
isOpen = false;
newStr.append(str.charAt(i));
continue;
}
if (isOpen) {
newStr.append(str.charAt(i));
} else {
stack.push(str.charAt(i));
}
}
while (!stack.isEmpty()) {
newStr.append(stack.pop());
}
System.out.println(newStr);
}
}
728x90
'알고리즘 > 스택' 카테고리의 다른 글
스택을 이용한 중위 표기법, 후위 표기법 변환 및 계산 (0) | 2023.12.19 |
---|---|
백준 1874번: 스택 수열 [스택][Stack] -Java (0) | 2023.12.11 |
백준 5397번: 키로거 [스택][Stack][덱][Deque][자료구조]- Java (0) | 2023.12.11 |
백준 10799번: 쇠막대기 [스택][Stack][누적합] -Java (1) | 2023.12.06 |
백준 4949번: 균형잡힌 세상[Stack][스택] -Java, 반례 (1) | 2023.12.05 |