[python_파이썬_참고pass]백준_4949번_균형잡힌세상_실버4_풀이
2024. 10. 9. 22:44ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/Xx_DRXY3r2Q?feature=shared
스스로 풀지 못해서 30분이 초과되어 구글링을 통해 해결했다.
1. stack의 개념으로 먼저 발생된 시작되는 괄호를 answer에 저장해주고
2. 짝이 맞는 괄호가 생기면 .pop으로 리스트를 비워둔다.
3. 짝이 맞지 않는 괄로가 생기면 answer 유지
4. 최종 answer가 비어 있으면 yes출력 아니면 no출력
해당 개념을 기억해야 할 것 같다.
()와 []는 짝으로 오기 때문에
1. 나는 ( ) [ ] 일때와 ( [ ] ) 이거를 어떻게 구분할지 고민했다.
별도 변수 answer를 두고 ( 먼저 저장하고 다음 [ 이게 나오면 또 저장한 후 짝이 맞는 ]가 나와야 정상이 되는 거니까
짝이 맞으면 answer에서 [ 를 삭제하는 것이다.
아직 100%이해는 가지 않지만 기억해두자!
import sys
input = sys.stdin.readline
# pop, append사용 변수 추가
while True:
str_list = input().rstrip()
if str_list == ".":
break
check_str = []
for i in str_list:
if i.isalpha() or i == ' ':
continue
else:
check_str.append(i)
if check_str[-1] != ".":
print("no")
check_str.pop()
answer = []
for i in check_str:
if i == "(" or i == "[":
answer.append(i)
elif i == ")":
if len(answer) != 0 and answer[-1] == "(":
answer.pop()
else:
answer.append(")")
break
elif i == "]":
if len(answer) != 0 and answer[-1] == "[":
answer.pop()
else:
answer.append("]")
break
if len(answer) == 0:
print("yes")
else:
print("no")
<다른 사람 풀이 참고>
while True :
a = input()
stack = []
if a == "." :
break
for i in a :
if i == '[' or i == '(' :
stack.append(i)
elif i == ']' :
if len(stack) != 0 and stack[-1] == '[' :
stack.pop() # 맞으면 지워서 stack을 비워줌 0 = yes
else :
stack.append(']')
break
elif i == ')' :
if len(stack) != 0 and stack[-1] == '(' :
stack.pop()
else :
stack.append(')')
break
if len(stack) == 0 :
print('yes')
else :
print('no')
728x90
반응형
'코드리뷰' 카테고리의 다른 글
[python_파이썬_pass]백준_10773번_제로_실버4_풀이 (1) | 2024.10.10 |
---|---|
[python_파이썬_pass]백준_9012번_괄호_실버4_풀이 (1) | 2024.10.10 |
★[알고리즘 학습_deque, stack, buffer_python_파이썬]백준_2164번_카드2_deque_알고리즘 기초 (1) | 2024.10.09 |
[python_파이썬_pass]백준_7568번_덩치_실버5_풀이 (0) | 2024.10.07 |
[python_파이썬_pass]백준_1676번_팩토리얼 0의 개수_실버5_풀이 (0) | 2024.10.07 |