문제
이 문제는 스택 자료구조를 활용해서 간단하게 해결할 수 있었습니다.
괄호의 짝을 확인하여 문제에 접근하면 됩니다.
현재 빈 스택이라면 여는 괄호는 push하고, 닫는 괄호라면 더 이상 짝을 맞출 수 없으니 false 처리합니다.
스택에 값이 있는 상태라면 여는 괄호는 마찬가지로 push합니다.
닫는 괄호는 스택에 top에 있는 값을 pop합니다. 이때 스택에 있는 괄호는 무조건 여는 괄호이기 때문에 괄호 짝을 맞출 수 있습니다.
탐색이 종료 후 스택에 값이 존재하면 짝이 맞춰지지 않은 경우이기 때문에 false를 처리하고, 빈 스택이라면 true로 정답처리를 합니다.
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
ArrayList<String> stack = new ArrayList<>();
for (int i=0; i<s.length(); i++) {
if (stack.size() == 0) {
if (s.charAt(i) == '(') {
stack.add("(");
} else {
return false;
}
} else {
if (s.charAt(i) == '(') {
stack.add("(");
} else {
stack.remove(stack.size() - 1);
}
}
}
if (stack.size() > 0) {
return false;
} else {
return true;
}
}
}
피드백 및 개선점은 댓글을 통해 알려주세요😊