본문 바로가기

Algorithm/프로그래머스

[Python] [코딩 기초 트레이닝] / 문자열 밀기

[문제 설명]

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



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

 

def solution(A, B):
    answer = 0
    return answer

 

 

- return answer if answer else -1

- a의 마지막 문자가 b에서 몇 번째에 있는가 (+1, 0부터 시작하기 때문에, 동일하면 0)

- b에서 위치 - a에서 위치 (근데 같은 문자가 있을 수도 있음)

- 배열이 일치하는가

 

 

 

[A] (내가 쓴 답)

def solution(A, B):
    #1
    answer = -1
    
    #2
    if A == B :
        return 0
    
    #3
    for i in range(1, len(A)) :
        A = A[-1] + A[0:-1]
        print(A)
        
        if A == B :
            return i
        
    return answer
  • 다른 사람 수식 참고

 

 

[A] 다른 답들

solution=lambda a,b:(b*2).find(a)

 

 

def solution(A, B): return (B * 2).find(A)