https://school.programmers.co.kr/learn/courses/30/lessons/76502
내 풀이
from copy import deepcopy
def solution(s):
key = {']':'[',')':'(','}':'{'}
st = []
new_s = deepcopy(s)
count =0
for k in range(len(s)):
temp=0
new_s = s[k:] + s[:k]
for i in new_s:
if i =='[' or i =='(' or i=='{':
temp +=1
st.append(i)
elif i==']' or i ==')' or i=='}':
temp -=1
if len(st)==0:
break
else:
if key[i] == st[-1]:
st.pop()
if temp ==0 and len(st)==0:
count +=1
return count
사람마다 정말 다양한 정답이 나올 수 있을거 같은 문제이다.
그렇지만 대부분은 스택을 썼을꺼라 생각하는데, 오랜만에 풀어서 그런지 너무 더럽게 푼거같다;
다른사람의 풀이
def is_valid(s):
stack = []
for ch in s:
if not stack:
stack.append(ch)
elif stack[-1] == '(':
if ch==')': stack.pop()
else: stack.append(ch)
elif stack[-1] == '{':
if ch=='}': stack.pop()
else: stack.append(ch)
elif stack[-1] == '[':
if ch==']': stack.pop()
else: stack.append(ch)
return False if stack else True
def solution(s):
answer = 0
for i in range(len(s)):
answer += is_valid(s[i:]+s[:i])
return answer
정처기 실기를 치고 공부하고 시험치고 온다고 한동안 공부를 소홀히 했는데 남은 방학동안 열심히 해봐야 겠다.
'취준 > 프로그래머스' 카테고리의 다른 글
성격 유형 검사하기 - 파이썬 (0) | 2022.08.31 |
---|---|
배달 - 파이썬 (0) | 2022.07.27 |
게임 맵 최단거리 - 파이썬 (0) | 2022.07.05 |
조이스틱 - 파이썬 (0) | 2022.07.03 |
소수 찾기 - 파이썬 (0) | 2022.07.02 |