코딩테스트 연습 - 괄호 회전하기 | 프로그래머스 스쿨 (programmers.co.kr)
나의 풀이
.
모범 답안
def bracket(s):
stack = []
for i in s:
if len(stack) == 0: stack.append(i)
else:
if i == ")" and stack[-1] == "(": stack.pop()
elif i == "]" and stack[-1] == "[": stack.pop()
elif i == "}" and stack[-1] == "{": stack.pop()
else: stack.append(i)
return 1 if len(stack) == 0 else 0
def solution(s):
answer = 0
for i in range(len(s)):
if bracket(s): answer +=1
s = s[1:] + s[:1]
return answer
from collections import deque
def check(s):
while True:
if "()" in s: s=s.replace("()","")
elif "{}" in s: s=s.replace("{}","")
elif "[]" in s: s=s.replace("[]","")
else: return False if s else True
def solution(s):
ans = 0
que = deque(s)
for i in range(len(s)):
if check(''.join(que)): ans+=1
que.rotate(-1)
return ans
deque.rotate()를 사용해서 리스트 회전하기
리스트 자료형을 deque자료형으로 바꾼후 rotate()함수를 이용하면 된다. 함수안에 음수를 넣게 된다면 왼쪽회전 양수는 오른쪽회전이다.
>>> from collections import deque
>>> test = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> test = deque(test)
>>> test.rotate(2)
>>> result = list(test)
>>> result
[8, 9, 1, 2, 3, 4, 5, 6, 7]
위 결과를 보게되면 rotate(2)를 함으로 오른쪽으로 2만큼 회전한 것을 볼 수 있다.
[Python] deque사용해서 리스트 회전하기 (velog.io)
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 2단계 / 전화번호 목록 / python (0) | 2024.02.06 |
---|---|
Programmers / 2단계 / 할인 행사 / python (0) | 2024.02.06 |
Programmers / 2단계 / 연속 부분 수열 합의 개수 / python (0) | 2024.02.06 |
Programmers / 2단계 / 귤 고르기 / python (0) | 2024.02.02 |
Programmers / 2단계 / 예상 대진표 / python (0) | 2024.02.02 |