[문제풀이] 맞는 괄호인지 체크하기 / TIL # 52

velg·2021년 9월 29일
0

문제풀이

목록 보기
10/12

Code Kata

문제

s는 여러 괄호들로 이루어진 String 인자입니다. s가 유효한 표현인지 아닌지 true/false로 반환해주세요.

종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다. 아래의 경우 유효합니다. 한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다. 괄호 순서가 맞아야 한다.

예를 들어 아래와 같습니다.

s = "()"
return true

s = "()[]{}"
return true

s = "(]"
return false

s = "([)]"
return false

s = "{[]}"
return true
s = "()"
return true

s = "()[]{}"
return true

s = "(]"
return false

s = "([)]"
return false

s = "{[]}"
return true

내 풀이

function isValid(s) {
  const bk = {
    '(':')',
    '{':'}',
    '[':']'
  }
  let arr = [];
  
  for(c of s) {
    if(bk.hasOwnProperty(c)) arr.push(c);
    else 
      if(bk[arr.pop()] !== c) return false;
  }
  return !arr.length;
}
  • 괄호들의 열기를 key로, 닫기를 value로 부여한 객체를 생성
  • stack 구조로 해결하기 위한 배열 선언
  • 열기가 나왔을 경우 배열에 담고, 아닐 경우 배열에서 삭제하면서 삭제한 값을 리턴해주는 arr.pop()을 이용해 불일치 여부 체크 후 false를 반환
  • 반복문이 종료된 후 배열에 아직 값이 남아있다면(arr.length !== 0)
    false를 반환
profile
초보 개발자

0개의 댓글