알고리즘
[프로그래머스/programmers] 코딩테스트 연습 - 문자열 밀기 파이썬(Python) 풀이
달리아(Dahlia)
2022. 11. 30. 21:26
문제 설명
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 몇 번 밀어야 하는지 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 < A의 길이 = B의 길이 < 100
- A, B는 알파벳 소문자로 이루어져 있습니다.
입출력 예
A | B | result |
"hello" | "ohell" | 1 |
"apple" | "elppa" | -1 |
소스 코드
def solution(A, B):
cnt = 0
listA=list(A)
listB=list(B)
for i in range(len(A)):
if listA == listB:
return cnt
listA.insert(0, listA.pop())
cnt += 1
return -1
풀이
문자열 뒤에서부터 하나씩 빼서 앞으로 붙여주었다. 파이썬은 문자열 슬라이싱이 자유로워서 A = A[-1]+A[:-1] 이렇게 풀었어도 될 것 같다.
마무리
테스트 케이스에서 하나가 자꾸 걸려서 당황했던 문제였다. 알고보니 if 문을 아래로 내려서.. 그랬던 것.. A, B가 같은 문자열이라 밀지 않아도 되는 경우에 0이 리턴돼야하는 조건이었던 것 같다. 언제나 예외를 잘 생각하자 :d
문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/120921