반응형
1. 문제
- (){}[] 각 문자로 구성된 문자열이 주어질 때, 옳바른 괄호로 구성되어 있는지 반환하라.
2. 해결
function isValid(s: string): boolean {
const stack = new Array();
const map = {
')' : '(',
']' : '[',
'}' : '{'
}
for(const char of s) {
if(!map.hasOwnProperty(char)) stack.push(char);
else {
const top = stack.pop();
if(top !== map[char]) return false;
}
}
return stack.length === 0;
};
- 오픈되어 있는지 판단을 어떻게 해야 하는 지 감을 못잡았다.
- map에 닫는 괄호만 속성값으로 주고, 저기에 없으면 열린 괄호이다.
- 열린 괄호를 만나면 stack에 넣고, 닫힌 괄호가 나타나면 옳바르게 맵핑됐는지 확인하고 false를 반환한다.
- stack이 다 비어야 옳바르게 괄호가 모두 사용된 것이다.