728x90
반응형
SW Expert Academy 4866번 괄호 검사 괄호 짝 맞추기 문제는 주어진 입력에서 중괄호, 소괄호 {}, ()가 제대로 짝을 이뤘는지 검사하는 문제이다. stack 스택 자료구조의 개념과 기본 연산 및 응용 능력을 확인하는 가장 기본적인 문제로 난이도는 D2다.
SW Expert Academy 4866번 괄호 검사 문제 정보
자료구조 분류
- 스택 Stack
난이도
- D2
괄호 검사 문제 요약
- 주어진 입력에서 괄호 {}, ()가 제대로 짝을 이뤘으면 1, 그렇지 않으면 0을 출력한다.
- 입력은 한 줄의 파이썬 코드일 수도 있고, 괄호만 주어질 수도 있다.
- print(‘{‘) 같은 경우는 입력으로 주어지지 않으므로 고려하지 않는다.
문제 풀이 과정
- 입력받은 문자열을 차례로 검사한다.
- 열린 괄호를 찾으면 스택에 push 한다.
- 닫힌 괄호를 찾으면
- 스택이 비어있거나 괄호의 짝이 맞지 않으면 검사를 종료한다.
- 괄호의 짝이 맞으면 스택에서 pop 하고 검사를 계속한다.
- 문자열 검사 완료 후에도 스택에 괄호가 남아있으면 짝이 맞지 않는 것이다.
- 테스트 케이스 번호, 짝을 이룬 여부를 출력한다.
코드 및 설명
- matching_dict {} - 괄호의 짝이 각각 키와 값으로 가지는 딕셔너리
- stack [] - 괄호를 저장해 놓을 스택 (리스트)
def bracket_check(inputValue):
# 괄호의 짝 딕셔너리
matching_dict = {'}': '{', ')': '('}
stack = []
for i in inputValue:
# 열린 괄호를 찾으면 스택에 push
if i in ('{', '('):
stack.append(i)
# 닫힌 괄호를 찾으면
elif i in ('}', ')'):
# 스택이 비어있거나 괄호의 짝이 맞지 않으면
if not stack or stack[len(stack) - 1] != matching_dict[i]:
return 0
stack.pop() # 짝이 맞으면 pop
# 검사 후에도 스택에 괄호가 남아 있으면
if stack:
return 0
else:
return 1
T = int(input())
for tc in range(T):
print('#%d %d' % (tc + 1, bracket_check(input())))
SW Expert Academy 4866번 괄호 검사 괄호 짝 맞추기 문제는 자료구조 중 스택 stack에 관한 문제이며 파이썬을 사용하였다. 난이도는 D2인데, 해결법은 알겠지만 코드로 구현하는 과정에서 삽질을 해서 2시간 30분이나 걸려서 풀었다.
728x90
반응형
'Algorithm Problem Solving > SW Expert Academy' 카테고리의 다른 글
[Python] SW Expert Academy - 4873. 반복 문자 지우기 (0) | 2021.07.29 |
---|---|
[Python] SW Expert Academy - 4871. 그래프 경로 (0) | 2021.07.28 |
[Python] SW Expert Academy - 4865. 글자수 (0) | 2021.07.27 |
[Python] SW Expert Academy - 4861. 회문 (0) | 2021.07.26 |
[Python] SW Expert Academy - 4864. 문자열 비교 (0) | 2021.07.26 |
댓글