728x90
반응형
SW Expert Academy에서 학습용으로 문제를 가져왔습니다. 문제가 될 시 수정, 삭제하겠습니다.
https://swexpertacademy.com/main/main.do
문제 :
주어진 입력에서 괄호 {}, ()가 제대로 짝을 이뤘는지 검사하는 프로그램을 만드시오.
예를 들어 {( )}는 제대로 된 짝이지만, {( })는 제대로 된 짝이 아니다. 입력은 한 줄의 파이썬 코드일수도 있고, 괄호만 주어질 수도 있다.
정상적으로 짝을 이룬 경우 1, 그렇지 않으면 0을 출력한다.
print(‘{‘) 같은 경우는 입력으로 주어지지 않으므로 고려하지 않아도 된다.
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. 1≤T≤50
다음 줄부터 테스트 케이스 별로 온전한 형태이거나 괄호만 남긴 한 줄의 코드가 주어진다.
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
input
3
print('{} {}'.format(1, 2))
N, M = map(int, input().split())
print('#{} {}'.format(tc, find())
output
#1 1
#2 1
#3 0
code
Test_case=int(input())
for t in range(1, Test_case+1):
stack=[]
ans=1
string=str(input()) #문자열 입력
arr=list(string) #리스트 사용
for i in range(0, len(arr)):
if arr[i]=='(' or arr[i]=='{': #만약 arr에 (나 {가 나오면
stack.append(arr[i]) #만들어두었던 stack에 추가
elif arr[i]==')' or arr[i]=='}': #아니면 arr가 )나 }가 나왔을때
if not stack: #stack이 비어있는데
ans=0 #ans=0과 동시에
break #멈춤
P=stack.pop() #stack에서 pop하는 것을 P로 지정
if arr[i] == ')' and P!='(': #만약 arr가 )이거나 pop한게 (가 아니면 즉 ()가 성립 안하게 되는 경우
ans=0 #ans=0이 나오도록
elif arr[i]=='}' and P!='{': #만약 arr가 }이거나 pop한게 {가 아니면 즉 {}가 성립 안하게 되는 경우
ans=0 #ans=0
if stack: #만약 stack이면
ans=0 #ans=0
print("#{} {}".format(t,ans))
이 문제는 stack의 개념과 pop함수를 이용하면 풀리는 문제였습니다.
반응형
'Programming > SWEA' 카테고리의 다른 글
[SWEA 4873].[파이썬 S/W 문제해결 기본] 4일차 - 반복문자 지우기 (0) | 2021.08.04 |
---|---|
[SWEA 4871].[파이썬 S/W 문제해결 기본] 4일차 - 그래프 경로 (0) | 2021.08.04 |
[SWEA 4869].[파이썬 S/W 문제해결 기본] 4일차 - 종이붙이기 (0) | 2021.08.03 |
[SWEA 4865].[파이썬 S/W 문제해결 기본] 3일차 - 글자수 (0) | 2021.08.03 |
[SWEA 4861].[파이썬 S/W 문제해결 기본] 3일차 - 회문 (0) | 2021.08.03 |