https://school.programmers.co.kr/learn/courses/30/lessons/12909
괄호가 올바르게 짝지어져있는지 판별하는 문제입니다. 스택을 사용해서 해결 할 수 있습니다.
문제를 풀때 스택을 사용하는게 정석이라고 생각하였습니다. 그래서 맨 윗줄에 Stack을 선언해두었습니다.
문자열 s에 대해 for문을 돌면서, '(' 부호가 나오면 스택에 push를 합니다.
')' 부호가 나오면 스택이 비어있는지, 스택의 맨 위 원소가 '(' 원소가 맞는지를 검증합니다.
최종적으로 반복문이 종료되었을 때, 정상적으로 '('가 모두 제거되어 스택에 원소가 남아있는지를 판별하게 됩니다. 이때, 스택에 원소가 남았다면 false를, 모두 비어있다면 true를 리턴하게 됩니다.
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
stack.push(s.charAt(i));
}
else {
if (!stack.empty() && stack.peek() == '(') {
stack.pop();
}
else {
return false;
}
}
}
return stack.empty() ? true : false;
}
}