문제링크
문제 접근
- 문제 이름만 봐도 스택써야 할 거 같다
- 스택 자료구조를 활용하여 괄호 시작인 '('은 스택에 넣고
- ')'이 나오면 스택에서 pop하여 올바른지 체크
- 반복문 다 돌고 스택이 비어있지 않을 경우도 false임
코드
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++){
char now = s.charAt(i);
if(now == '('){
stack.push(now);
}
else if(now == ')' && stack.empty()){
return false;
}
else if(now == ')' && stack.peek() == '('){
stack.pop();
}
else if(now == ')' && stack.peek() == ')'){
return false;
}
}
if(!stack.empty()) return false;
return true;
}
}
결과

정리
- 올바른 괄호 처럼 특정 문자열규칙을 확인하는 문제들은 스택자료구조 바로 고민
- 다 돌고 나서도 스택에 남아있는 값으로 올바른지 체크