임의의 문자열이 주어지면 [],{},() 짝에 맞게 닫아야한다. 짝이 맞게구성된 문자열이면 true 아니라면 false를 반환한다.
Input: s = "()[]{}"
Output: true
Input: s = "(]"
Output: false
처음 문제를 받았을때 스택과 객체를 이용하여 문제를 해결하면 좋을거같았고
닫는 브라켓을 key로 주고 여는 브라켓을 value로 구성된 type를 선언하고 문자열을 순회하면서 stack 에 요소를 저장하고 선언된 type으로 검사하여 stack에서 제거하거나 push를 하는 방식으로 구현하였다. 최종적으로 남은 stack 에 길이가 0이라면 true를 반환하는 알고리즘이다.
var isValid = function (s) {
const stack = [];
const type = {
']': '[',
'}': '{',
')': '(',
};
for (const el of s) {
if (stack.length <= 0 || stack[stack.length - 1] !== type[el]) {
stack.push(el);
} else {
stack.pop();
}
}
return stack.length <= 0;
};
다른 제출물들을 확인해봤는데 내가 푼 것과 유사하거나 이중 for문을 도는 등 별로 효율적이지 않아보였다. 이 문제가 쉬웠을수도 있고 아닐수도 있지만 조금이나마 성장한 것 같다는 기분이 들었다.