문제
- SWEA Stack 4866 괄호검사 D2
- 파이썬
- 문제 링크
접근
1. 입력값을 string으로 받고 입력값의 길이 안에서 괄호 탐색 실시 여는 괄호 "(" , "{" 발견 시 스택에 push
2. 닫는 괄호 ")", "}" 발견 시 스택에 존재하는 여는 괄호 "("를 꺼내준다.
3. 입력된 괄호와 stack의 top에 있는 괄호와 일치하지 않는 경우에 대한 처리도 필요하다.
4. 최종적으로 스택의 길이가 0이면 1을 리턴해준다
나의 코드
T = int(input())
for t in range(T):
Data = input()
stack = []
result = 0
for i in range(len(Data)):
if Data[i] == "(" or Data[i] == "{": # 여는괄호가 올 경우 stack에 push
stack.append(Data[i])
elif Data[i] == ")" or Data[i] == "}": # 닫는괄호 이며 stack이 빈 경우
if len(stack) == 0: # 처음부터 닫는 괄호가 오는 경우 (스택이 빈 경우)
stack = [Data[i]]
break # 입력된 괄호와 stack의 top에 있는 괄호와 일치하지 않는 경우
elif (Data[i] == "}" and stack[-1] !="{") or (Data[i] == ")" and stack[-1] != "("):
stack = [Data[i]]
break
else: #stack에 저장된 괄호와 일치하는 닫는 괄호가 오는 경우
stack.pop()
if len(stack) == 0:
result = 1
else:
result = 0
print("#{} {}".format(i+1, result))
'개발공부 > algorithm' 카테고리의 다른 글
[SWEA 문제해결 기본: Stack] [Python] 4873.반복문자지우기 (0) | 2020.09.27 |
---|---|
[SWEA 문제해결 기본: Stack] [Python] 4869.종이접기 (0) | 2020.09.22 |
[SWEA 문제해결 기본: String] [Python] 4861.회문 (1) | 2020.09.18 |
[SWEA 문제해결 기본: String] [Python] 4865.글자수 (1) | 2020.09.18 |
[SWEA 문제해결 기본: String] [Python] 4864.문자열비교 (1) | 2020.09.18 |