반응형
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를 활용한 풀이>
함수들을 많이 아는 게 힘인 것 같다. (●'◡'●)
문제를 많이 풀면서 차근차근 익혀가자!!
반응형
'알고리즘 > 프로그래머스 level 1,2' 카테고리의 다른 글
[파이썬🐍] 프로그래머스 : 나머지가 1이 되는 수 찾기 (0) | 2021.06.16 |
---|---|
[파이썬🐍] 프로그래머스 : 조이스틱 (0) | 2021.05.28 |
[파이썬🐍] 프로그래머스 : 점프와 순간이동 (0) | 2021.05.26 |
[파이썬🐍] 프로그래머스 : 스킬트리 (0) | 2021.05.26 |
[파이썬🐍] 프로그래머스 : 올바른 괄호 (0) | 2021.05.25 |
댓글