https://school.programmers.co.kr/learn/courses/30/lessons/120921
내코드
나는.. 구현에는 충실해...
def solution(A, B):
answer = -1
for i in range(0, len(A)):
if A[len(A)-i:] + A[:len(A)-i] == B:
return i
return answer
기똥찬 코드
냅다 두번 연결시키면 그 안에 순환되는 모든 문자열은 포함되었을 테니
거기서 찾는 문자열의 인덱스를 find로 찾고 없으면 원래도 -1 반환되니 그대로 answer 가져가면 되고
0일경우 A와 B가 같으니까 그냥 두고
0보다 클 경우 해당 인덱스가 문자열 인덱스 0 자리에 오려면
{(문자열 전체길이+1) 번째 - (해당 idx + 1) 번째} 만큼 가야하므로 len(A) - idx 가 되는데 여기서 idx는 answer이므로
def solution(A, B):
AA = A+A
answer = AA.find(B)
if answer > 0:
answer = len(A) - answer
return answer
반전
라고 신명나게 풀이했는데 통과 안되는 풀이였는데..?
아 뒤에도 문자열이 반복되면
ex)
A = 'atat'
B = 'tata'
result = 1
이런 식이면 find 가 처음 나오는 인덱스라서 문제가 되는거 같은데..
뒤에서 같은 문자열이 나오면 그게 더 최소 횟수로 밀어서 완성 될 수 있으니까!
그래서 len(A) - 1 인덱스부터 -1 해가면서 뒤에서부터 찾는 포문을 넣으니 해결이 되었다
근데 이렇게 할꺼면 굳이......
분명 다른 방법이 있는데 내가 또 for문을 돌린걸까
def solution(A, B):
doubleA = A+A
print(doubleA)
answer = -1
#추가한 부분
for i in range(1, len(A)):
idx = doubleA.find(B, len(A) - i)
if idx != -1:
answer = idx
break
#여기까지
print(answer)
if answer > 0:
answer = len(A) - answer
return answer
돌아는 갓댜..
'코테 공부 > python' 카테고리의 다른 글
Python 캐릭터의 좌표 (0) | 2023.06.05 |
---|---|
Python 직사각형 넓이 구하기 (0) | 2023.06.04 |
Python .find() .index() (0) | 2023.06.02 |
Python 사소하지만 함수 호출시점, 선언시점 (0) | 2023.06.02 |
[프로그래머스] Python 코테 스터디 개인정보 수집 유효기간 (0) | 2023.06.02 |