https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다
www.acmicpc.net
오늘의 문제는 자료구조 알고리즘 시간에도 한 번 다루었던 스택에 관한 문제입니다. 대표 유형인 괄호 문제이죠. 스택의 핵심은 모두 아시다시피 FILO(First In, Last Out)입니다. 그 부분을 집중해서 읽어보시면 여태까지 제가 올린 문제 중에서는 가장 수월하게 해결하실 수 있으실 것 같습니다.
정답 코드는 다음과 같습니다.
brackets = ['(', ')', '[', ']']
while 1:
sentence = input()
if sentence == ".":
break
brackets_stack = []
for i in sentence:
if i in brackets:
brackets_stack.append(i)
while len(brackets_stack) >= 2 and \
((brackets_stack[-2] == '(' and brackets_stack[-1] == ')') or \
(brackets_stack[-2] == '[' and brackets_stack[-1] == ']')):
brackets_stack = brackets_stack[:-2]
if len(brackets_stack) == 0:
print("yes")
else:
print("no")
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[방학의 PS] set, deque, 리스트의 참조 복사 (0) | 2022.06.15 |
---|---|
[방학의 PS] 다이나믹 프로그래밍(DP) - BOJ_1463 (0) | 2022.06.15 |
[방학의 PS] 프린터 큐 - BOJ_1966 (0) | 2022.06.15 |
[방학의 PS] 이분 탐색과 매개 변수 탐색 - BOJ_2805, BOJ_1654 (0) | 2022.06.15 |
에라토스테네스의 체 (0) | 2022.03.16 |