코드는 아래와 같다.
function isValid(s) {
let stack = [];
let answer = true;
for(let x of s){
if(x === ')'&& stack[stack.length -1] === '(') {
stack.pop()
}else if(x === ']' && stack[stack.length -1] === '[' ){
stack.pop();
}else if(x === '}' && stack[stack.length -1] === '{'){
stack.pop()
}else{
stack.push(x)}}
if(stack.length !== 0) return false
return answer
}
아 그리고..! 오늘도 신박한 방법을 알아냈다(!)
천재 용현님(?)의 풀이방법인데 아주 간단하고 신선하다,,,
function isValid(s) {
for(let x of s){
if(s.includes('[]')||
s.includes('{}')||
s.includes('()'))
s= s.replace('()', '').replace('[]', '').replace('{}', '')
}
return !s.length
}
인자로 받은 s를 다 돌아주면서 s전체에 [], {}, () 가 있는지 확인을 하고 있으면 replace를 이용하여 빈문자열로 만들어준다.
그리고 !s.length를 return하여 s.length가 0이 된다면 true, 그렇지 않다면 false가 return되는 로직-!
아주 간단해,,,, 신박해,,,,,,, 생각해보면 알고리즘 풀 때 replace 써 볼 생각은 안 해 본 것 같다,,
세상은 넓고 천재는 많다(?)