https://school.programmers.co.kr/learn/courses/30/lessons/76502#
def zz(s):
stack = []
for j in range(len(s)):
if len(stack) == 0:
stack.append(s[j])
else:
if stack[-1] == '[' and s[j] == ']' :
stack.pop()
elif stack[-1] == '{' and s[j] == '}' :
stack.pop()
elif stack[-1] == '(' and s[j] == ')' :
stack.pop()
else:
stack.append(s[j])
if len(stack) == 0:
return True
else:
return False
def solution(s):
answer = 0
s = list(s)
if len(s) % 2 !=0:
return 0
for i in range(len(s)):
if zz(s):
answer += 1
s.append(s.pop(0))
return answer
우선 문제를 보자마자 스택을 사용해야겠다는 생각이 들었다.
그러나 다른 생각이 들어서 코드를 짜봤다.
[], {}, () 딕셔너리를 만들고 (,{,[이 들어오면 +1, ),},]이 들어오면 -1을 넣는 방법으로 했다.
역시나 테케 14번에서 떨어졌다.
이런 방법은 문자열 안에 모두 짝이 있는지만 확인하는 것이고 문제에서 요구한 "올바른 괄호 문자열"인지는 판별하지 않는다.
때문에 스택을 사용해 하나씩 대조해야했다.
처음에 시도한 방법에서 실패한 후 1시간 동안 고민했다.
애초에 빨리 스택으로 전환했으면 10분이면 풀었을 문제였다...ㅠ
'알고리즘' 카테고리의 다른 글
프로그래머스) k진수에서 소수찾기-python (0) | 2023.01.20 |
---|---|
프로그래머스)튜플 -python (0) | 2023.01.20 |
프로그래머스)[1차] 캐시-python (0) | 2023.01.19 |
프로그래머스)줄 서는 방법-python (0) | 2023.01.18 |
프로그래머스)하샤드 수-python (0) | 2023.01.18 |