
아주 재밌는 문제였다.
정답 코드
package stackEx;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Q4 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while (true) {
String S = br.readLine();
if (S.equals(".")) {
break;
}
Stack<Character> stack = new Stack<>();
for (int i = 0; i < S.length(); i++) {
if (S.charAt(i) == '(' || S.charAt(i) == '[') {
stack.push(S.charAt(i));
} else if (S.charAt(i) == ')') {
if (stack.isEmpty()) {
stack.push(')');
break;
}
if (stack.peek() == '(') {
stack.pop();
} else stack.push(')');
}else if (S.charAt(i) == ']') {
if (stack.isEmpty()) {
stack.push(']');
break;
}
if (stack.peek() == '[') {
stack.pop();
} else stack.push(']');
}
}
if (stack.isEmpty()) {
sb.append("yes").append("\n");
} else sb.append("no").append("\n");
}
System.out.println(sb);
}
}
스택 정리글을 참고했다.
2024.12.10 - [자료구조] - 자 바 스 택 클 래 스
자 바 스 택 클 래 스
https://ittrue.tistory.com/200 [Java] 자바 스택(Stack) 클래스 메서드 정리 및 활용스택이란? 스택은 ‘쌓다.’, ‘쌓이다.’와 같은 뜻을 가진 용어로, 접시를 높이 쌓아 놓은 형태와 비슷한 자료구조이
study-with-mini.tistory.com
코드 정리를 해보자면,
만약 원하는 여는 괄호가 있다면, push해주지 않고 그냥 바로 pop해서 비워준다.
하지만 스택 내부가 비어있거나, 원하는 여는 괄호가 들어있지 않는 경우에는,
초반에 empty인 경우나, '(' ---> ')' ---> ')' 이 순서대로 들어오는 경우 등 만약 push해주지 않고 break한다면,
내부가 비어있게 된다. 따라서 push를 진행 한 후 break를 해주면 되겠다!!
'백준' 카테고리의 다른 글
| [백준]2346: 풍선 터뜨리기 , 덱 개념 (1) | 2025.01.20 |
|---|---|
| [백준]11866: 요세푸스 문제, 큐 정리 (0) | 2025.01.20 |
| [백준]11478: hashset 이란? , substring복습!!!!!!!!! 음하하음하하하하!!! (2) | 2025.01.17 |
| [백준]1620: 자바-나는야 포켓몬마스터!!!!우하하하하하음하하하하!!! (1) | 2025.01.15 |
| 소수 찾기-에라토스테네스-백준 17103 (0) | 2025.01.14 |