문자열 밀기

kyle·2023년 3월 24일
0
post-custom-banner

문제 설명
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

제한사항
0 < A의 길이 = B의 길이 < 100
A, B는 알파벳 소문자로 이루어져 있습니다.

입출력 예

ABresult
"hello""ohell"1
"apple""elppa"-1
"atat""tata"1
"abc""abc"0

필수 키워드

  • deque
  • deque.rotate()
    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]

구현 코드

def push(string):
    list_string = list(string)
    answer=[]
    answer.append(list_string[-1])
    for i in range(0,len(list_string)-1):
        answer.append(list_string[i])
    return ''.join(answer)
def solution(A, B):
    answer = -1
    count = 0
    ans=A
    for _ in range(len(A)):
        if ans == B:
            return count
            break
        else:
            ans=push(ans)
            count = count + 1
    return answer

구현 코드2

from collections import deque
def solution(A, B):
    a= deque(A)
    answer = -1
    cnt = 0 
    for i in range(len(A)):
        if B == (''.join(a)):
            return cnt
        a.rotate(1)
        cnt = cnt + 1
        
    return answer
profile
성장하는 개발자
post-custom-banner

0개의 댓글