[Codility] Brackets

snusun·2021년 11월 27일
0

Codility

목록 보기
7/13

Brackets

1차 시도

def solution(S):
    # write your code in Python 3.6
    s = []
    if not S:
        return 1
    for i in range(0, len(S)):
        if S[i] == "(" or S[i] == "{" or S[i] == "[":
            s.append(S[i])
        if S[i] == ")":
            if s[-1] == "(":
                s = s[:-1]
            else:
                return 0
        if S[i] == "}":
            if s[-1] == "{":
                s = s[:-1]
            else:
                return 0
        if S[i] == "]":
            if s[-1] == "[":
                s = s[:-1]
            else:
                return 0
    return 1 


아니 invalid 입력도 내가 처리해야하는건가??

2차 시도

def solution(S):
    # write your code in Python 3.6
    s = []
    if not S:
        return 1
    for i in range(0, len(S)):
        if S[i] == "(" or S[i] == "{" or S[i] == "[":
            s.append(S[i])
            #print(s)
        if S[i] == ")":
            #print(s[-1])
            if not s:
                return 0
            if s[-1] == "(":
                s = s[:-1]
            else:
                return 0
        if S[i] == "}":
            if not s:
                return 0
            if s[-1] == "{":
                s = s[:-1]
            else:
                return 0
        if S[i] == "]":
            if not s:
                return 0
            if s[-1] == "[":
                s = s[:-1]
            else:
                return 0
    if s:
        return 0
    return 1 

그것이 아니고 s가 비었을 경우를 생각하지 않았네요
stack queue 문제의 경우 비어있는 경우를 항상 생각해주어야 한다
그런데 이번엔 time out 났다

3차 시도

def solution(S):   
    # write your code in Python 3.6
    s = []
    if not S:
        return 1
    for i in range(0, len(S)):
        if S[i] == "(" or S[i] == "{" or S[i] == "[":
            s.append(S[i])
            #print(s)
        else:
            if not s:
                return 0
            t = s.pop()
            if S[i] == ")" and t != "(":
                #print(t)
                return 0
            if S[i] == "}" and t != "{":
                return 0
            if S[i] == "]" and t != "[":
                return 0
    if s:
        return 0
    return 1

pop() method 가 있구나
파이썬은 정말.. 정말 편한 언어다
자바로 하다 파이썬으로 하려니 편안하다
💯 드디어 타임 인

profile
대학생 근데 이제 컴공을 곁들인

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN