알고리즘/프로그래머스 level 1,2
[파이썬🐍] 프로그래머스 : 괄호 회전하기
코딩개미뚠뚠
2021. 5. 27. 18:08
반응형
def solution(s):
answer = 0
for i in range(len(s)):
if i == 0: s
else: s = s[1:] + s[0]
if check(s)==True:
answer += 1
return answer
def check(s):
stack = []
for i in s:
if i in ('[', '(', '{'): stack.append(i)
else:
if not stack: return False
x = stack.pop()
if i == ']' and x != '[': return False
elif i == ')' and x != '(': return False
elif i == '}' and x != '{': return False
if stack: return False #스택에 남아있는 경우
return True
<내 풀이>
문제를 풀고 다른 사람들은 어떻게 풀었을까 찾아보다가
deque에 넣고 rotate라는 함수를 이용한 풀이를 볼 수 있었다.
retoate(num) 일 때 -> num이 양수면 오른쪽으로 num만큼 회전
num이 음수면 왼쪽으로 num만큼 회전
위의 문제 같은 경우 s.rotate(-i)를 해주면 된다. rotate를 사용할 경우 i가 0일 경우를 따로 고려해주지 않아도 되어서 코드가 좀 더 간결해진다.
from collections import deque
def solution(s):
answer = 0
for i in range(len(s)):
s_list = deque(s)
s_list.rotate(-i)
if check(s_list) == True:
answer += 1
return answer
def check(s):
stack = []
for i in s:
if i in ('[', '(', '{'): stack.append(i)
else:
if not stack: return False
x = stack.pop()
if i == ']' and x != '[': return False
elif i == ')' and x != '(': return False
elif i == '}' and x != '{': return False
if stack: return False #스텍에 남아있는 경우
return True
<rotate를 활용한 풀이>
함수들을 많이 아는 게 힘인 것 같다. (●'◡'●)
문제를 많이 풀면서 차근차근 익혀가자!!

반응형