728x90
반응형
문제
주어진 입력에서 괄호 {}, ()가 제대로 짝을 이뤘는지 검사하는 프로그램을 만드시오.
예를 들어 {( )}는 제대로 된 짝이지만, {( })는 제대로 된 짝이 아니다. 입력은 한 줄의 파이썬 코드일수도 있고, 괄호만 주어질 수도 있다.
정상적으로 짝을 이룬 경우 1, 그렇지 않으면 0을 출력한다.
print(‘{‘) 같은 경우는 입력으로 주어지지 않으므로 고려하지 않아도 된다.
내 생각
Stack을 이용한다. stack은 LIFO의 구조로 후입선출이다! 즉, 가장 나중에 들어간 것이 먼저 나오는 것을 잘 생각해야함.
입력받은 문자열의 원소를 꺼내보면서 괄호를 여는 '{' or '('가 있으면 stack에 저장한다.(append)
괄호를 닫는 '}' or ')'가 있으면 저장된 stack의 top(나중에 넣은 = 먼저 나오는)을 꺼내서(pop) 비교한다. -> if문으로 괄호 여는 원소가 오면 return 0, 또는 닫는 괄호가 필요한데 stack에 원소가 존재하지 않으면 return 0
마지막으로 확인이 다 끝났는데 stack에 원소가 남아있으면 return 0
내 코드
T = int(input())
for test_case in range(1, T + 1):
input_str = input()
stack = []
answer = 1
for char in input_str:
if char in '{(':
stack.append(char)
elif char in '})':
if not stack:
answer = 0
break
top = stack.pop()
if (char == ')' and top != '(') or (char == '}' and top != '{'):
answer = 0
break
if stack:
answer = 0
print(f'#{test_case} {answer}')
728x90
반응형
'Algorithm > 코딩테스트 (Python)' 카테고리의 다른 글
[SWEA 4873][파이썬 S/W 문제해결 기본]. 4일차 - 반복문자 지우기 (0) | 2023.10.26 |
---|---|
[SWEA 4871][파이썬 S/W 문제해결 기본]. 4일차 - 그래프 경로 (0) | 2023.10.26 |
[SWEA 4869][파이썬 S/W 문제해결 기본]. 4일차 - 종이붙이기 (0) | 2023.10.25 |
[프로그래머스] 무작위로 K개의 수 뽑기 (0) | 2023.10.24 |
[프로그래머스][셋(집합)] 최빈값 구하기 (0) | 2023.10.23 |
댓글