균형잡힌 세상
문제설명
각 줄의 괄호들이 균형을 이루고 있는지 검사하는 문제
소스코드
while True:
string = input().rstrip()
if string == ".":
break
stack = []
balanced = True
for char in string:
if char in "([":
stack.append(char)
elif char == ")":
if not stack or stack[-1] != "(":
balanced = False
break
stack.pop()
elif char == "]":
if not stack or stack[-1] != "[":
balanced = False
break
stack.pop()
if balanced and not stack:
print("yes")
else:
print("no")
Python 풀이
백준 4949번 문제는 문자열의 균형을 확인하는 문제로,
괄호((), [])의 짝이 올바르게 이루어졌는지를 판별해야 합니다.
문자열을 확인하기 위해 스택 자료구조를 사용했습니다.
스택은 LIFO(Last In, First Out) 후입선출 방식으로 동작하므로,
순서대로 매칭 여부를 확인할 수 있습니다.
먼저 문자열을 입력받습니다. \n로 입력이 들어오기 때문에
rstrip()을사용하여 엔터를 제거하여 문자열만 남게 합니다.
추가로 만약 문자열이 "." 이라면 입력받는 것을 종료합니다.
stack 리스트를 제작하고,
여는 괄호 ( 또는 [는 스택에 추가합니다. 닫는 괄호 ) 또는 ]가 나오면 스택에서 가장 최근의 여는 괄호와 비교합니다. 만약 짝이 맞지 않으면 "no"를 출력하고 종료합니다. 모든 문자를 확인한 뒤 스택이 비어 있다면 "yes"를 출력하고, 남아 있다면 "no"를 출력합니다.
'Algorithm(알고리즘) > Baekjoon(백준)' 카테고리의 다른 글
| BAEKJOON 20124 Python (B2) (0) | 2025.01.31 |
|---|---|
| BAEKJOON 1436 Python (1) | 2024.11.21 |
| BAEKJOON 9093 Python (0) | 2024.11.20 |
| BAEKJOON 2914 Python (1) | 2024.11.19 |
| BAEKJOON 1439 Python (0) | 2024.11.18 |
