View
문제 설명
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 몇 번 밀어야 하는지 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 < A의 길이 = B의 길이 < 100
- A, B는 알파벳 소문자로 이루어져 있습니다.
입출력 예ABresult
"hello" | "ohell" | 1 |
"apple" | "elppa" | -1 |
입출력 예 설명
입출력 예 #1
- "hello"를 오른쪽으로 한 칸 밀면 "ohell"가 됩니다.
입출력 예 #2
- "apple"은 몇 번을 밀어도 "elppa"가 될 수 없습니다.
나의 풀이
from collections import deque
def solution(A, B):
q = deque(A)
for i in range(0,len(A)):
q = deque(A)
q.rotate(i)
if str(''.join(q)) == B:
return i
return -1
다른 풀이
solution=lambda a,b:(b*2).find(a)
String.find('찾는 문자열')
ex ) 'ohellohell'.find('hello') -> hello의 첫번째 문자열인 h의 인덱스가 1 이므로 1을 Return 한다.
만약, 찾는 문자열이 없다면, find() 함수는 -1을 return 한다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
programmers) 유한소수 판별하기 (0) | 2022.11.11 |
---|---|
programmers) 직사각형 넓이 구하기 (0) | 2022.11.10 |
programmers) 캐릭터의 좌표 (1) | 2022.11.10 |
programmers) 문자열 계산하기 (0) | 2022.11.10 |
programmers) 구슬을 나누는 경우의 수 (0) | 2022.11.10 |
reply