[LeetCode/TS] 20. Valid Parentheses

2024. 12. 30. 21:38· 코딩테스트

문제

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

 


 

1.

function isValid(s: string): boolean {
    const map = {
        ')': '(',
        '}': '{',
        ']': '['
    }
    const stack = [];

    for (let char of s) {
        if (char === '(' || char === '{' || char === '[') {
            stack.push(char);
        } else {
            const pop = stack.pop()
            const mappp = map[char]
            console.log({ pop, mappp })

            if (stack.length === 0 || mappp !== pop) {
                return false
            }
        }
    }

    return stack.length === 0;
};

 

 

 

문제점: 

예제 '()[]{}' 가 들어간다고 치면

1. '('
스택에 '(' 가 쌓인다.
stack (

2. ')'
else 구문으로 넘어가서

pop 변수에 값이 할당된다.
stack
그 후 if 조건으로 stack.length === 0 이 만족해버려서 false 라는 잘못된 값이 나온다.

 

 

해결책:
조건문에서 비교할 때 pop() 한다.

 

2.

function isValid(s: string): boolean {
    const map = {
        ')': '(',
        '}': '{',
        ']': '['
    }
    const stack = [];

    for (let char of s) {
        if (char === '(' || char === '{' || char === '[') {
            stack.push(char);
        } else {
            const mappp = map[char]
            if (stack.length === 0 || mappp !== stack.pop()) {
                return false
            }
        }
    }

    return stack.length === 0;
};

 

 

 

 

 

 

 

3. 다른 사람 풀이

function isValid(s: string): boolean {
    const stack = [];
    const p = { ')': '(', '}': '{', ']': '[' };
    for(let i = 0, len = s.length; i < len; i++) {
        if (['(', '[', '{'].includes(s[i])) {
            stack.push(s[i]);
            continue;
        } 
        
        if (stack.pop() !== p[s[i]]) {
            return false;
        }
    }
    return stack.length === 0;
};

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'코딩테스트' 카테고리의 다른 글

[LeetCode/TS] 13. Roman to Integer  (0) 2024.12.27
[Leetcode/TS] 9. Palindrome Number  (1) 2024.12.19
[Leetcode/TS] 2. Add Tow Number  (0) 2024.12.18
[Leetcode/TS] 1. Two Sum  (1) 2024.12.17
프로그래머스 | 레벨0 | Kotlin  (0) 2024.02.02
'코딩테스트' 카테고리의 다른 글
  • [LeetCode/TS] 13. Roman to Integer
  • [Leetcode/TS] 9. Palindrome Number
  • [Leetcode/TS] 2. Add Tow Number
  • [Leetcode/TS] 1. Two Sum
다시은
다시은
🔥
다시은
재은로그
다시은
전체
오늘
어제
  • 분류 전체보기 (127)
    • 코딩테스트 (40)
    • Language (2)
      • JAVA (2)
      • Kotlin (0)
      • TypeScript (0)
    • SQL (1)
    • 인프라 (1)
    • 왕초보일지 (77)
    • 회고 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프레드시트
  • googleapis
  • 문자열변환
  • Kotlin
  • SQL문법
  • sql
  • mysql

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
다시은
[LeetCode/TS] 20. Valid Parentheses
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.