괄호의 열림과 닫힘이 올바른지 확인하는 문제로, 괄호의 개수, 올바른 범위로 설정되었는지 확인하는 과정을 통해서, answer로 boolean 타입 데이터를 리턴한다.
s | answer |
---|---|
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
(
’와 ‘)
’의 개수는 같아야 한다.위와 같은 두 가지의 제한점을 확인해보면, 반복문을 통해서 여는 기호와 닫는 기호의 수를 비교하면서, 닫는 기호가 여는 기호의 수보다 많아지는 시점이 있다면 false를 리턴하는 형식으로 진행한다.
문자열의 길이를 한 번 순회하고 종료하기 때문에 **O(n)
**의 시간 복잡도를 가지게 된다.
[pseudo-code]
class Solution {
boolean solution(String s) {
boolean answer = true;
int openSign = 0;
int closeSign = 0;
반복문 String s 내부 순환
s[i]의 값이 '(' 라면 openSign 값 1 증가
s[i]의 값이 ')' 라면 closeSign 값 1 증가
closeSign의 값이 openSign의 값보다 크다면 answer = false;
반복문이 종료됐다면 openSign과 closeSign의 크기 비교
만약 크기가 다르다면 answer = false;
return answer;
}
}