출처 : https://school.programmers.co.kr/learn/courses/30/parts/12081
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
function solution(s) {
const stack = [];
if (s.length % 2 !== 0) {
return false;
} else {
for (let i = 0; i < s.length; i++) {
if (s[i] === '(') {
stack.push(s[i]);
} else if (stack.length === 0) {
return false;
} else {
stack.pop();
}
}
return stack.length === 0;
}
}
스택, 큐 문제라서 스택, 큐를 사용했더니 효율성 테스트에서 실패하였다.
function solution(s) {
let count = 0;
for (let i = 0; i < s.length; i++) {
if (s[i] === '(') {
count++;
} else {
if (count === 0) {
return false;
}
count--;
}
}
return count === 0;
}
문자열을 순회하면서 '(' 를 만나면 스택에 추가하는 것이 아니라 카운트를 해주고 '('를 만나면 카운트를 줄임
자바스크립트(javascript) 문자열 다루기
자바스크립트에서 문자열을 배열처럼 인덱스로 접근이 가능하다.