Notice
반응형
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- Stack
- Algorithms
- SQL
- 에라토스테네스의 체
- npm
- deque
- set
- 정처산기
- js
- IntelliJ
- 자료구조
- java
- 응용SW
- input
- Eclipse
- BREW
- 백준
- 문제풀이
- react
- 수학
- HashMap
- 이클립스
- script
- node
- googleChart
- 책추천
- jsp
- TSX
- Oracle
- html
Archives
- Today
- Total
개발하자
[백준][Java] 9012번 괄호 본문
728x90
안녕하세요 :)
적어도 하루 1개 이상 알고리즘 문제를 해결하려 노력하고 있습니다.
혼자 해결 가능한 문제도 있고, 어려웠던 문제도 있던 차라 복습하고자 글을 써 내려갑니다.
백준 9012 괄호
이 문제는 괄호 문자열이 올바른지 판단하는 문제인데요,
이 문제는 int count로 괄호의 균형을 맞춰서 푸는 방식도 있지만
스택(Stack)을 활용해서 괄호의 짝을 직접 맞춰보는 방식으로 풀어봤습니다.
📘 문제

💡 해결 방법
여는 괄호 '('는 스택에 push, 닫는 괄호 '('가 나오면 스택에서 pop으로 없애줍니다. (짝 맞추기)
만약 '(' 괄호가 없어 pop할 수 있는 괄호가 없다면 잘못된 괄호쌍이므로 "NO".
모든 입력을 확인한 뒤 스택이 비어있다면 "YES" 아니면 "NO"를 출력합니다.
✅ 풀이 및 설명 (설명은 더보기 클릭)
더보기
- 테스트 케이스 수 t를 입력받고, 각각의 괄호 문자열을 처리합니다.
- 괄호 문자열을 문자 배열로 바꿔서 하나씩 확인합니다.
- '('는 스택에 넣고, ')'는 짝이 될 '('가 있는지 확인 후 없으면 바로 break.
- 반복문을 다 돌고 나서 스택이 비어 있다면 모든 괄호쌍이 잘 맞은 것이므로 "YES".
- 그렇지 않으면 "NO".
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < t; i++) {
Stack<Character> stack = new Stack<>();
char[] str = br.readLine().toCharArray();
for (char s : str) {
if (s == '(') {
stack.push(s); // 여는 괄호는 스택에 push
} else {
if (stack.isEmpty()) {
stack.push(s); // 짝이 안 맞으므로 일단 넣고 break
break;
} else {
stack.pop(); // 짝이 맞으면 pop
}
}
}
if (stack.isEmpty()) {
sb.append("YES").append("\n");
} else {
sb.append("NO").append("\n");
}
}
System.out.print(sb);
br.close();
}
}
이번 문제는 괄호 짝 맞추기를 통해 스택의 구조와 역할을 자연스럽게 익힐 수 있는 문제였어요.
단순히 boolean 변수로만 처리하지 않고 실제로 스택을 활용해서 푼 것이 좋은 연습이 되었습니다.
공부하면서 유용했던 부분 메모 겸 공유하고자 끄적입니다.
고쳐야 하는 부분 있다면 댓글 남겨주시면 수정하겠습니다.
행복한 하루 보내세요 (❁´◡`❁)
728x90
반응형
'Algorithms > Baekjoon' 카테고리의 다른 글
| [백준][Java] 12789번 도키도키 간식드리미 (2) | 2025.04.26 |
|---|---|
| [백준][Java] 4949번 균형잡힌 세상 (5) | 2025.04.25 |
| [백준][Java] 10773번 제로 (4) | 2025.04.25 |
| [백준][Java] 28278번 스택 2 (6) | 2025.04.24 |
| [백준][Java] 13909번 창문 닫기 (1) | 2025.04.24 |