728x90
반응형
def check_matching_brackets(s):
stack = [] # 스택 초기화
# 닫힌 괄호를 키(key)로, 여는 괄호를 값(value)으로 하는 딕셔너리
brackets = {')': '(', '}': '{', ']': '['}
for char in s:
if char in brackets.values():
# 여는 괄호일 경우 스택에 push
stack.append(char)
elif char in brackets.keys():
# 닫는 괄호일 경우
if not stack or brackets[char] != stack.pop():
# 스택이 비어있거나, 짝이 맞지 않는 경우 False 반환
return False
else:
# 괄호 이외의 문자는 무시
continue
# 스택에 남아있는 괄호가 없어야 짝이 맞음
return not stack
# 입력 문자열 받아오기
input_str = input()
# 짝이 맞는지 판별
result = check_matching_brackets(input_str)
# 결과 출력
print(result)
1. 스택 데이터 구조를 사용하여 일치하는 괄호를 확인하는 논리
2. 사전을 올바르게 사용하여 닫는 괄호를 해당하는 여는 괄호에 매핑하고 입력 문자열을 문자별로 반복합니다.
3. 여는 괄호를 스택에 푸시하고 닫는 괄호를 만나면 꺼낸다.
4. 팝된 값이 사전의 해당 여는 괄호와 일치하는지 확인.
5. 닫는 괄호를 만났을 때 불일치가 있거나 스택이 비어 있으면 False를 반환
6. 그렇지 않으면 입력 문자열의 다음 문자로 계속
7. 마지막으로 입력 문자열의 모든 문자를 처리한 후 스택이 비어 있는지 확인
8. 스택이 비어 있으면 모든 여는 괄호에 일치하는 닫는 괄호가 있음을 의미하며 True를 반환, 그렇지 않으면 False를 반환
반응형
'취업 및 이직 준비 > 코딩테스트 준비' 카테고리의 다른 글
코딩테스트 - 파이썬 - 상자 채우기 (0) | 2023.04.19 |
---|---|
코딩테스트 준비 - 팰린드롬 (0) | 2023.04.18 |
파이썬 - 추첨결과 - 코딩테스트 - 참고용 (0) | 2023.04.07 |
자바스크립트 코딩 문제 결과 참고용 (0) | 2023.04.06 |
프로그래머스 - 타겟넘버 - 자바 - 코딩테스트연습 (0) | 2023.04.04 |