[4949] 균형잡힌 세상
문자열이 주어졌을 때 균형잡힌 문자열인지 아닌지를 판단
Input
- 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어짐
- 길이는 100글자보다 작거나 같음
- 입력의 종료조건으로 맨 마지막에 온점 하나(".")
Output
- 각 줄마다 해당 문자열이 균형을 이루고 있으면 "yes"를, 아니면 "no"를 출력
✨ Solve
1. 여는 괄호가 나오면 스택에 추가
2. 닫는 괄호가 나왔을 경우
2-1 스택이 비어있으면 올바르지 않은 괄호쌍
2-2 스택의 top이 짝이 맞지 않는 괄호일 경우 올바르지 않은 괄호 쌍
2-3 스택의 top이 짝이 맞는 괄호일 경우 pop
3. 모든 과정을 끝낸 후 스택에 괄호가 남아있으면 올바르지 않은 괄호쌍
💻 Code
### 언어 python3, 메모리 31256KB, 시간 220ms
sentences = []
while True:
sentence = input()
if sentence == '.':
break
sentences.append(sentence)
answers =[]
for sentence in sentences:
stack = []
pos = 0
line = list(sentence)
for item in line:
if item == '(' or item =='[':
stack.append(item)
elif item ==')' :
if len(stack) == 0:
answers.append('no')
break
elif stack[-1] =='(':
stack.pop()
else:
answers.append('no')
break
elif item ==']':
if len(stack) == 0:
answers.append('no')
break
elif stack[-1] =='[':
stack.pop()
else:
answers.append('no')
break
elif item =='.':
if len(stack) == 0:
answers.append('yes')
break
else:
answers.append('no')
break
for answer in answers:
print(answer)
🎯 Question
없음
'# 소쿠리 개발 공부방 > 코테 문제풀이' 카테고리의 다른 글
[BAEKJOON] [1753] 최단경로: PYTHON (0) | 2023.08.22 |
---|---|
[BAEKJOON] [1935] 후위 표기식2: PYTHON (0) | 2023.07.27 |
[BAEKJOON] [10845] 큐: PYTHON (0) | 2023.07.27 |
[BAEKJOON] [10828] 스택: PYTHON (0) | 2023.07.27 |