20. Valid Parentheses

늘보·2021λ…„ 10μ›” 21일
0

LeetCode

λͺ©λ‘ 보기
53/69

πŸ’‘ 풀이

var isValid = function (s) {
  let stack = [];

  for (let i = 0; i < s.length; i++) {
    if (s[i] === '(') stack.push(')');
    else if (s[i] === '{') stack.push('}');
    else if (s[i] === '[') stack.push(']');
    else {
      if (s[i] !== stack.pop()) return false;
    }
  }
  console.log('stack: ', stack);

  return stack.length === 0;
};

let s = '{[]}';
isValid(s);

πŸ“ 정리

stackκ³Ό κ΄€λ ¨ν•œ 문제λ₯Ό μ—°μŠ΅ 쀑이닀. 문제의 μš”κ΅¬μ‚¬ν•­μ€ κ΄„ν˜Έκ°€ μ˜¬λ°”λ₯΄κ²Œ λ‹«νžˆλƒλ₯Ό νŒλ³„ν•˜λΌλŠ” 것이닀. μ•„λž˜ μ˜ˆμ‹œλ₯Ό 보면 λ°”λ‘œ μ•Œ 수 μžˆμ„ 것이닀.

λ¬Έμ œμ—λŠ” μ†Œκ΄„ν˜Έ, μ€‘κ΄„ν˜Έ, λŒ€κ΄„ν˜Έμ˜ 3μ’…λ₯˜μ˜ κ΄„ν˜Έκ°€ μ‘΄μž¬ν•œλ‹€.

  • μ—¬λŠ” κ΄„ν˜Έκ°€ λ‚˜μ˜¬ λ•ŒλŠ” 같은 λͺ¨μ–‘μ˜ λ‹«λŠ” κ΄„ν˜Έλ₯Ό stack 배열에 pushν•΄μ€€λ‹€.

  • μœ„μ˜ μ½”λ“œμ˜ λ§ˆμ§€λ§‰ else λ¬Έμ—λŠ” λ‹«λŠ” κ΄„ν˜Έλ§Œ μžˆμ„ λ•Œμ˜ 쑰건인데, 이 λ•Œ s[i]κ°€ stack.pop()κ³Ό λ‹€λ₯΄λ‹€λ©΄ κ΄„ν˜Έ μˆœμ„œκ°€ inValid ν•˜λ‹€λŠ” 의미일 것이닀. 그럼 λ°”λ‘œ falseλ₯Ό return ν•΄μ£Όλ©΄ λœλ‹€.

  • λ§ˆμ§€λ§‰μ— validν•œ κ΄„ν˜Έ λͺ¨μ–‘이라면 μ§€κΈˆκΉŒμ§€ stack에 λ“€μ–΄κ°„ μš”μ†Œμ˜ κ°œμˆ˜μ™€ stack.pop()의 νšŸμˆ˜κ°€ 동일할 것이닀. λ”°λΌμ„œ κ΄„ν˜Έκ°€ μœ νš¨ν•˜λ‹€λ©΄ stack은 μ–Έμ œλ‚˜ 빈 배열이 λœλ‹€.

μˆ˜μ •, 지적을 ν™˜μ˜ν•©λ‹ˆλ‹€!

문제 링크

https://leetcode.com/problems/valid-parentheses/

LeetCode GitHub

https://github.com/tTab1204/LeetCode

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보