✅문제 설명
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
✅제한사항
0 < A의 길이 = B의 길이 < 100
A, B는 알파벳 소문자로 이루어져 있습니다.
def solution(A, B):
answer = -1
## 처음부터 A와 B가 같으면
if A==B:
return 0
for i in range(1, len(A)) :
## A를 오른쪽으로 한 칸씩 밀었을때
A = A[-1]+A[0:-1]
print(A)
if A == B:
return i
return answer
A = A[-1]+A[0:-1]
로 오른쪽으로 한칸 씩 미는 것을 표현했다.def solution(A, B):
return (B * 2).find(A)
A | B | |
---|---|---|
"hello" | "ohell" | 1 |
문자열을 한방향으로 밀기때문에 문자열*2를 했을 때 원래 문자열이 있다면 밀기를 통해 만들 수 있다는 뜻이 된다.
find() 함수는 인자로 받은 문자열의 처음 인덱스를 리턴하고, 만약 찾지 못하면 -1을 리턴하는 것을 이용하여 풀이했다.