문제
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
알고리즘
- 입력받은 문자열이 점 하나일 때까지 반복한다.
- for문을 통해 입력받은 문자열을 확인한다.
- 코드를 보면 이해하기 쉬울 것 같다.
코드
import sys
while True:
c = str(sys.stdin.readline().rstrip())
stack = []
# 점 하나가 들어오면 반복문을 멈춰준다.
if c == ".":
break
# 반복문을 통해 입력받은 문자열을 확인한다.
for i in c:
# '('와 '[' 를 스택에 추가한다.
if i == '(' or i == "[":
stack.append(i)
# 입력받은 문자가 ')'라면
elif i == ')':
# 스택에 요소가 있고 스택의 마지막 요소가 '('라면
# 괄호가 균형이 맞으므로 스택 맨 뒤에 있는 '(' 요소를 팝해준다.
if stack and stack[-1] == '(':
stack.pop()
# 그게 아니라면 균형이 맞지 않으므로 스택에 요소를 하나 추가하고 반복을 멈춰준다.
else:
stack.append(i)
break
# 입력받은 문자가 ']'라면
elif i == ']':
# 스택에 요소가 있고 스택의 마지막 요소가 '['라면
# 괄호가 균형이 맞으므로 스택 맨 뒤에 있는 '[' 요소를 팝해준다.
if stack and stack[-1] == '[':
stack.pop()
# 그게 아니라면 균형이 맞지 않으므로 스택에 요소를 하나 추가하고 반복을 멈춰준다.
else:
stack.append(i)
break
# 스택 안에 요소가 있으면 no 를, 없으면 yes 를 출력한다.
if stack:
print("no")
else:
print("yes")
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1764번(파이썬): 듣보잡 (0) | 2021.09.24 |
---|---|
[baekjoon] 백준 3190번(파이썬): 뱀 (2) | 2021.09.23 |
[baekjoon] 백준 11279번(파이썬): 최대 힙 (0) | 2021.09.22 |
[baekjoon] 백준 1927번(파이썬): 최소 힙 (0) | 2021.09.21 |
[baekjoon] 백준 10816번(파이썬): 숫자 카드 2 (0) | 2021.09.20 |