소스 코드

while True:
    word = list(str(input()))
    if word[0] == '.':
        break

    res = 'yes'

    chk = ['[','(',']',')']

    items = []

    for q in word:
        if q == '.':
            if len(items) != 0:
                res = 'no'
            break

        if q in chk:
            if q == chk[0] or q == chk[1]:
                items.append(q)
            else:
                if len(items) == 0:
                    res = 'no'
                    break

                else:
                    if items[-1] == chk[0]:
                        if q == chk[2]:
                            items.pop(-1)
                        else:
                            res = 'no'
                            break

                    elif items[-1] == chk[1]:
                        if q == chk[3]:
                            items.pop(-1)
                        else:
                            res = 'no'
                            break

    print(res)

 


해결 방법

1. 주어진 값들 중 ( ) [ ] 만 저장하고 짝을 맞춰준다

2. 진행도중 다른 짝을 만나거나(items의 마지막 값과 현재 입력받은 값이 다른 경우)

3. '.' 을 만난 시점에서(다 끝났을 때) items에 항목이 남아있으면 안 됨


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.