이 문제는 괄호 문자열이 올바르게 짝지어졌는지 판단하는 간단한 검증 문제
문자열 s가 "(", ")"만으로 구성되어 있을 때,
괄호들이 바르게 짝지어졌는지 확인하는 문제
예를 들면,
- "()()", "(())()" → O
- ")()(", "(()(" → X
왼쪽 괄호 '('를 만나면 열어주고,
오른쪽 괄호 ')'를 만나면 닫아줍니다.
닫을 괄호가 없는데 닫으려고 하면? 틀린 괄호!
import java.util.ArrayDeque;
public class Solution {
// s = '(' 또는 ')' 로만 이루어진 문자열
public boolean solution(String s) {
ArrayDeque<Character> stack = new ArrayDeque<>();
// 문자열을 문자 배열로 변환
for (char c : s.toCharArray()) {
if (c == '(') {
// 여는 괄호면 스택에 넣는다
stack.push(c);
} else {
// 닫는 괄호를 만났을 때
// 스택이 비었으면 짝이 될 여는 괄호가 없으므로 false
if (stack.isEmpty()) {
return false;
}
// 짝이 되는 여는 괄호 하나를 제거
stack.pop();
}
}
// 모든 괄호가 짝지어졌다면 스택이 비어 있어야 함
return stack.isEmpty();
}
}
'알고리즘 문제풀이 > 프로그래머스 문제풀이' 카테고리의 다른 글
프로그래머스 문제 풀이 - 할인 행사 (해시 맵) (2) | 2025.08.06 |
---|---|
프로그래머스 문제 풀이 - 완주하지 못한 선수 (해시 맵) (2) | 2025.08.05 |
프로그래머스 문제 풀이 - 기능개발(큐) (9) | 2025.08.04 |