알고리즘/프로그래머스

[파이썬] 프로그래머스_문자열 밀기

딱따구르리 2022. 11. 9. 11:58
728x90
반응형

문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/120921

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

해설

데크의 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
반응형