1. 문제 접근 방식
보통 이런 문제는 스택을 이용한 풀이가 정석이다.
2. 문제 풀이 - 스택 사용
blank = ['(', '[']
def check_len(stack):
if len(stack) > 0:
return True
return False
while True:
S = input().rstrip()
if S == '.':
break
else:
stack = list()
for i in S:
if i == ')':
if check_len(stack) and stack[-1] == '(':
stack.pop()
else:
stack.append(i)
elif i == ']':
if check_len(stack) and stack[-1] == '[':
stack.pop()
else:
stack.append(i)
elif i in blank:
stack.append(i)
if len(stack) > 0 :
print('no')
else:
print('yes')
하지만, 파이썬의 문자열 처리의 사기성을 이용하여 문자열로 풀어버렸다.
3. 문제풀이 - 문자열 함수 사용
blank = ['(', ')', '[', ']']
com = ['()', '[]']
while True:
S = input().rstrip()
if S == '.':
break
else:
A = list()
for i in S:
if i in blank:
A.append(i)
B = ''.join(A)
while True:
if com[0] in B:
B = B.replace(com[0], '')
elif com[1] in B:
B = B.replace(com[1], '')
else:
break
if len(B) > 0:
print('no')
else:
print('yes')
4. 흠...
맨 위에 것이 스택으로 푼거고, 맨 아래것이 문자열로 푼 것인데, 오히려 문자열이 시간이 더 적게 나왔다.
출제 의도와는 다르나 자신만의 해답을 찾아 푸는것도 코딩'테스트' 에서는 강점이 될 수도 있겠다. 문제만 풀면 다음 스텝으로 넘어갈 수 있으니까 말이다.
728x90
'코딩테스트 기록 > 03. Stack' 카테고리의 다른 글
[백준] 10828 스택 (Python) (0) | 2023.03.29 |
---|