[1스4코2파] # 166. LeetCode Pattern 20. Valid Parentheses

gunny·2023년 6월 18일
0

코딩테스트

목록 보기
167/530

[1스4코2파] 1명의 스위프트 개발자와 4명의 코틀린 개발자, 2명의 파이썬 개발자코딩 테스트 서막 : 1스4코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능

START :

[3코1파] 2023.01.04~ (166차)
[4코1파] 2023.01.13~ (158일차)
[1스4코1파] 2023.04.12~ (69일차)
[1스4코2파] 2023.05.03 ~ (48일차)

Today :

2023.06.16 [166일차]
LeetCode Patterns
20. Valid Parentheses

20. Valid Parentheses

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

문제 설명

stack 으로 푸는 대표적인 문제이다.
프로그래머스에서도 상당히 많이 풀었었음..
유효한 괄호 형식인지 확인하는 문제임

문제 풀이 방법

톱밥문제이지만 풀다보니까 너무 길었네
video solution 보고 좀 더 깔끔하게 바꿨다 굿

내 코드

첫 코드

class Solution:
    def isValid(self, s: str) -> bool:
        char_dict = {')':'(', ']':'[', '}':'{'}
        stack = []
        for string in s:
            if not stack:
                if string not in ['(','[','{']:
                    return False
            if string in ['(','[','{']:
                stack.append(string)
            else:
                if stack[-1]==char_dict[string]:
                    stack.pop()
                else:
                    return False
        return True if not stack else False
            

좀 더 깔끔하게 푼 것

class Solution:
    def isValid(self, s: str) -> bool:
        pDict = {"}":"{", "]":"[", ")":"("}
        stack = []

        for string in s:
            if string in pDict:
                if stack and stack[-1] == pDict[string]:
                    stack.pop()
                else:
                    return False
            
            else:
                stack.append(string)

        return True if not stack else False

증빙

처음에 덕지덕지 코드로 푼거구욘

이게 video solution

메모리 측면에서 video solution이 더 낫네
ㅇㅋ

여담

낼 월요일 실화냐 월요일 멈춰
break 없는 주말 while 문에 빠지고 싶다

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글