처음에 보자마자 대놓고 이건 스택 문제다!싶은 문제였다.
그런데 완전탐색으로 풀면 더 간단하게 풀릴 것 같아서 완탐으로 풀다가
일부 테스트를 통과하지 못하면서 오기로 끝까지 완탐으로 해결했다.
풀이 방법은 다음과 같다.
)
가 나오거나 맨 마지막에 (
가 나오면 올바르지 않은 괄호이다.(
와 )
괄호 개수를 센다.())(()
와 같은 잘못된 순서로 나오는 괄호가 있는지 확인한다.true
, 아니면 false
를 반환한다.처음에는 3번 케이스를 생각 못해서 틀렸다.
완전탐색으로 풀 때는 예외 케이스를 주의해야 할 것 같다.
class Solution {
boolean solution(String s) {
int leftCount = 0;
int rightCount = 0;
if (s.charAt(0) == ')' || s.charAt(s.length() - 1) == '(') {
return false;
}
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
leftCount++;
}
if (s.charAt(i) == ')') {
rightCount++;
}
if (rightCount > leftCount) {
return false;
}
}
if (leftCount == rightCount) {
return true;
}
return false;
}
}