문제
- SWEA 1218.괄호짝짓기 D4
- python
- 문제링크
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나의 코드
- 스택을 사용하면 쉽게 풀리는 문제다.
- 왼쪽 괄호일 경우 스택에 추가해주고, 오른쪽 괄호일 경우 쌍을 이루는 괄호와 일치하는지 비교한다.
- 오른쪽 괄호가 왼쪽 괄호와 쌍을 이룰 경우, 스택의 가장 상위 괄호를 pop 해준다.
- 그렇지 않을 경우, 탐색을 종료한다.
for tc in range(10):
N = int(input())
lst = list(map(str, input()))
stck = list()
# 왼쪽 괄호
left = ['(', '{', '[', '<']
# 오른쪽 괄호
right = [')', '}', ']', '>']
for i in range(N):
if lst[i] in left:
stck.append(lst[i])
if lst[i] in right:
# 가장 상위의 괄호 값과 쌍이라면
if right.index(lst[i]) == left.index(stck[-1]):
# 상위의 원소 제거하기
stck.pop()
else:
break
res = 0
if len(stck) == 0:
res = 1
print("#{} {}".format(tc + 1, res))
'개발공부 > algorithm' 카테고리의 다른 글
[SWEA] [python] 5174, 5176, 5177, 5178 - Tree (0) | 2021.03.03 |
---|---|
[SWEA][python] 1219.길찾기 - DFS (0) | 2021.03.02 |
[SWEA] 1227.미로2 - BFS (0) | 2021.03.01 |
[SWEA] 5188.최소합 - DFS, 완전탐색 (0) | 2021.02.28 |
[SWEA] 5105.미로의거리 (bfs) (0) | 2021.02.28 |