본문 바로가기
개발/알고리즘

[codility] Brackets

by ny0011 2021. 2. 19.
반응형

app.codility.com/programmers/lessons/7-stacks_and_queues/brackets/

 

Brackets coding task - Learn to Code - Codility

Determine whether a given string of parentheses (multiple types) is properly nested.

app.codility.com

empty list에서 pop을 시도하면 에러가 발생한다는 교훈을 얻었다

와! 37프로!

def solution(S):
    # write your code in Python 3.6
    d = []
    for i in S:
        if i == "[":            
            d.append(1)
        elif i == "(":
            d.append(2)
        elif i == "{":
            d.append(3)
        else:
            p = d.pop()
            if i == "]" and p != 1 :
                return 0
            elif i == ")" and p != 2 :
                return 0
            elif i == "}" and p != 3 :
                return 0            
    if len(d) == 0:
        return 1

 

예외 케이스 : }{ 를 생각 못함

S에 문자열이 있고 d가 비어있을 때 pop을 시도하면 nested가 아니라는 말이니 바로 0을 리턴

아~~~ 67프로

def solution(S):
    # write your code in Python 3.6
    d = []
    for i in S:
        if i == "[":            
            d.append(1)
        elif i == "(":
            d.append(2)
        elif i == "{":
            d.append(3)
        else:
            if len(d) == 0:
                return 0
            p = d.pop()
            if i == "]" and p != 1 :
                return 0
            elif i == ")" and p != 2 :
                return 0
            elif i == "}" and p != 3 :
                return 0            
    if len(d) == 0:
        return 1

 

예외 케이스 : {{{ 를 생각 못함

def solution(S):
    # write your code in Python 3.6
    d = []
    for i in S:
        if i == "[":            
            d.append(1)
        elif i == "(":
            d.append(2)
        elif i == "{":
            d.append(3)
        else:
            if len(d) == 0:
                return 0
            p = d.pop()
            if i == "]" and p != 1 :
                return 0
            elif i == ")" and p != 2 :
                return 0
            elif i == "}" and p != 3 :
                return 0            
    if len(d) == 0:
        return 1
    else:
        return 0

'개발 > 알고리즘' 카테고리의 다른 글

[codility] Nesting  (0) 2021.02.20
[codility] Fish  (0) 2021.02.20
[codility] Triangle  (0) 2021.02.19
[codility] NumberOfDiscIntersections  (0) 2021.02.19
[codility] MaxProductOfThree  (0) 2021.02.19

댓글