괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
◽ "()()" 또는 "(())()" 는 올바른 괄호입니다.
◽ ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
❗제한 사항
◾ 문자열 s의 길이 : 100,000 이하의 자연수
◾ 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
s | answer |
---|---|
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
우선적으로 괄호의 갯수가 알맞게 짝을 맞춰주는 거에 초점을 잡아야 했다. "("와 같은 문자열일때 +1 그 외 문자열은 -1 하여 최종적으로 0이되면 되는 것이다. "("문자열이 나오기도 전에 다른 문자열이 나오면 안되는 것 또한 체크해야한다.
function solution(s){
var answer = true;
let count = 0;
for(i = 0 ; i < s.length ; i++){
s[i] === "(" ? count++ : count --
if(count < 0){break;}
}
count === 0 ? answer = true : answer = false
return answer;
}
구현과정에서 배열에 담을 생각을 해서 어려운 부분이 있었다. 다른 분들의 풀이를 보니 정규식을 사용한 풀이가 생각 보다 많았다. 정규식을 간단하게라도 공부할 필요가 있을거 같다..!