반응형
링크 : https://www.acmicpc.net/problem/4949
문제
생각 정리
- 일단 stack으로 하면 된다는 생각까지가 힘들었다.. 만약 stack으로 해줄 수 있다는 걸 알았으면 시간이 더 단축됐을텐데말이다.
- stack을 이용하면 '(' or '[' 는 그냥 입력하고 ')' or ']'는 각각 '(' or '['가 있는지 확인을 해준 후, 있다면 빼주는 것이다.
- stack에 들어가는 것은 '('와 '[' 뿐인 것이다.
- stack이 비어있거나 최상위 값이 '[' or '('가 아닌 경우, 균형을 의미하는 flag 변수를 false로 바꿔준 후 break한다.
- 마지막에 flag 변수와 stack에 값이 남아있는지 확인하여 'yes'를 출력할지 'no'를 출력할지 정한다.
import sys
input = sys.stdin.readline
while True:
s = input()
print(s,'.')
flag = True
if s == '.':
break
stack = []
for i in s:
if i in '([':
stack.append(i)
elif i == ')':
if not stack or stack.pop() != '(':
flag = False
break
elif i == ']':
if not stack or stack.pop() != '[':
flag = False
break
if not stack and flag:
print("yes")
else:
print('no')
계속 '출력초과' 라는 결과가 뜬다. 이 코드의 문제는 무엇일까?
readline()의 공백문자('\n') 때문이다.
그래서 readline() 뒤에 rstrip()을 이용해서 제거해주어야한다. 네번째 line만 다음과 같이 바꿔주면 된다.
s = input().rstrip()
반응형
'Algorithm & Data Structure > 문제 풀이' 카테고리의 다른 글
[programmers] 완주하지 못한 선수 (Python) (0) | 2021.06.22 |
---|---|
[programmers] 모의고사 (Python) (0) | 2021.06.21 |
[10828] 스택 (Python) (0) | 2021.06.21 |
[9012] 괄호 (Python) (0) | 2021.06.21 |
[18258] 큐 2 (Python) (0) | 2021.06.18 |