코딩테스트/SWExpertAcademy

괄호검사 Python(SW Expert Academy)

멍토 2020. 3. 5.

난이도 : D2

문제번호 : 4866

※ 저의 풀이가 무조건적인 정답은 아닙니다.

다른 코드가 좀더 효율적이고 좋을 수 있습니다.

다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.

문제 주소 및 출처입니다.

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVHzyqqe8DFAWg

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

주어진 입력에서 괄호 {}, ()가 제대로 짝을 이뤘는지 검사하는 프로그램을 만드시오.
 

예를 들어 {( )}는 제대로 된 짝이지만, {( })는 제대로 된 짝이 아니다. 입력은 한 줄의 파이썬 코드일수도 있고, 괄호만 주어질 수도 있다.
 

정상적으로 짝을 이룬 경우 1, 그렇지 않으면 0을 출력한다.
 

print(‘{‘) 같은 경우는 입력으로 주어지지 않으므로 고려하지 않아도 된다.

입력

첫 줄에 테스트 케이스 개수 T가 주어진다.  1≤T≤50
 

다음 줄부터 테스트 케이스 별로 온전한 형태이거나 괄호만 남긴 한 줄의 코드가 주어진다.

출력

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.

예시

입력 출력

3
print('{} {}'.format(1, 2))
N, M = map(int, input().split())
print('#{} {}'.format(tc, find())

#1 1
#2 1
#3 0

2. 문제풀이

파이썬 스택 1일차 연습문제 중 하나인 괄호검사 문제이다.

이 문제를 풀기 위해서는 스택에 대하여 알아야 한다.

stack이란 LIFO(Last in First out)의 형식을 가지고있으며

나중에 들어온 내용이 먼저 나가는 구조이다.

파이썬에서는 스택을 리스트로 간단하게 만들 수 있다.

 

문제는 여는 괄호라면 스택에 넣고 닫는 괄호라면 스택에 있는 내용을 꺼내어 비교한다.

매우 간단한 문제였다?


3. 소스코드

match_dict = {'}''{'')''('}
 
def solution(user_input):
    arr = []
    for s in user_input:
        if s == '(' or s == '{':
           arr.append(s)
        elif s == ')' or s == '}':
            if len(arr) == 0 or arr[len(arr) - 1!= match_dict[s]:
                return 0
            arr.pop()
    if len(arr) != 0:
        return 0
 
    return 1
 
 
for t in range(int(input())):
    print('#{} {}'.format(t+1, solution(input())))

댓글

💲 광고입니다.