문제 풀이

이홍경·2021년 9월 15일
0
post-thumbnail

BalancedBrackets

문자열로 입력받은 모든 괄호의 짝이 맞는지 판별하는 문제.

'[' '{' '(' 가 모두 올 ㄱ수 있지만 '('만 판별 한기로 한다.

괄호는 열린만큼 닫혀야 하고, 빈 문자열을 받게되면 true를 리턴한다.

if(str.length === 0) {
    return true;
  } 
const arr = str.split('').filter(item => item !== '[' && item !== ']' && item !== '{' && item !== '}')
if(arr.length % 2 === 1) {
  return false;
}
if(arr[0] === ')') {
  return false;
}
for(let i = 0; i < arr.length / 2; i++) {
  if(arr[i] === '(' && arr[arr.length - 1] === ')')
 }
 // 처음에는 성립하지 않는 경우의 수를 제외해 주고 문제를 풀려고 하였으나..
const balancedBrackets = function (str) {
const stack = [];
const opener = {
    '{': '}',
    '[': ']',
    '(': ')'
 } 
const closer = '}])';
for(let i = 0; i < str.length; i++) {
   if(str[i] in opener) {
     stack.push(str[i]);
   } else if(closer.includes(str[i])) {
      const top = stack.pop() // 가장 마지막 스택의 값을 꺼내
      const pair = opener[top] 
      if(pair !== str[i]) { // 그에 짝이 맞는지 확인
        return false 
      }
    }
  }
  return stack.length === 0; //stack이 비워지면 true 반환함.
};
// 스택을 활용하여 짝이 맞지 않는 경우를 판별하여 문제를 푸는 방법이 있었다...
점점 토이 문제를 풀며 한계를 느끼곤 한다....이런 방법을 어떻게 떠올리는지....

참 세상에는 능력자들이 많은것 같다....	문제를 많이 접하다 보면 익숙해 지지 않을까 한다....]

분발하자....
profile
개발자를 꿈꾸는 자

0개의 댓글