728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120921
해설
데크의 rotate 함수를 사용하면 쉽게 회전시킬 수 있다.
1씩 회전을 시켜주면서 회전 횟수를 저장해주면 된다. 그러다 회전한 데크 A와 데크 B가 같아지면 회전 횟수를 리턴해주면 된다.
끝까지 회전해도 같지 않다면 그 때 -1을 리턴한다.
- 다른 사람 풀이 중 데크 안쓰고 푸는 풀이
def solution(A, B):
AA = A+A
answer = AA.find(B)
if answer > 0:
answer = len(A) - answer
return answer
이 풀이도 좋은 것 같다.
A에 A를 한 번 더 붙인 문자열에서 B의 인덱스를 찾아 A의 길이에서 빼주는 걸로도 쉽게 답을 찾을 수 있다.
find 함수는 해당 문자의 인덱스를 찾지 못하면 -1을 반환하기 때문에 B가 될 수 없는 경우도 쉽게 답을 찾을 수 있다.
코드
-파이썬
from collections import deque
def solution(A, B):
dq_a = deque(A)
cnt = 0
for i in range(len(A)):
if dq_a == deque(B):
return cnt
dq_a.rotate(1)
cnt += 1
return -1
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[파이썬] 프로그래머스_문자열 계산하기 (0) | 2022.11.16 |
---|---|
[파이썬] 프로그래머스_팩토리얼 (0) | 2022.11.16 |
[파이썬] 프로그래머스_문자열 정렬하기(1) (0) | 2022.11.08 |
[파이썬] 프로그래머스_2차원으로 만들기 (0) | 2022.11.02 |
[파이썬] 프로그래머스_모스부호(1) (0) | 2022.10.26 |