https://school.programmers.co.kr/learn/courses/30/lessons/120921
이 문제는 2가지 방식으로 풀 수 있는데 먼저 for문과 if문을 이용해서 풀게 되면
for i in range(len(A)):를 통해 A의 길이만큼 반복하게 해야하는데 그 이유는 A의 길이만큼 반복해서 오른쪽으로 옮길 때 최대 A의 길이 번을 옮기면 기존의 A와 같아지기 때문이다.
if A == B 라면 0을 반환하라 했기에 바로 return answer를 해주고 다르다면 A의 맨끝 문자를 가장 앞으로 오게하고 나머지 문자들을 그 뒤에 붙여야 하므로 A = A[-1] + A[:-1]를 해주고 answer += 1를 해줘 1번 시행했음을 알리고 A와 B가 같아질 때까지 A의 길이만큼 반복하다 같지 않다면 -1를 return 해주면 된다.
다른 방법으로는 자료구조에서 설명한 deque을 이용한 방법이다.
먼저 deque를 사용하기위해 from collections import deque를 선언해주고 A,B를 deque로 변환해주어야 하기에
a,b = deque(A), deque(B)를 해준다. 그 후 for반복문을 통해 A의 길이만큼 반복해주는데 이 때 a와 b가 같다면 return i를 아니라면 a.rotate(1)를 이용해 a를 오른쪽으로 1칸 밀어준다. 이를 A의 길이만큼 반복해도 같지 않다면 return -1를 해준다.
'프로그래머스 > 프로그래머스 Lv0' 카테고리의 다른 글
Lv0 문자열 출력 (0) | 2024.07.27 |
---|---|
[PCCE 기출문제] 6번 / 가채점 (0) | 2024.07.26 |
Lv0 특이한 정렬 (0) | 2024.07.25 |
Lv0 유한소수 판별하기 (0) | 2024.07.25 |
Lv0 저주의 숫자 3 (2) | 2024.07.24 |