포시코딩

[프로그래머스][Lv.0][재귀] 문자열 밀기 본문

자료구조알고리즘/문제풀이

[프로그래머스][Lv.0][재귀] 문자열 밀기

포시 2023. 1. 10. 11:36
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120921

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

def solution(A, B):
    return test(A, B, len(A))

def test(A, B, x):
    if x == 0:
        return -1
    elif A == B:
        return len(A)-x
    else:
        new_A = A[-1]+A[0:-1]
        return test(new_A, B, x-1)

재귀 함수를 통해 한칸씩 밀며 일치할 때의 민 횟수를 리턴시켰다.

만약 제자리로 돌아올 때까지 일치하지 않았다면 -1 리턴

 

다른 풀이

def solution(A, B):
    return (B*2).find(A)

한칸씩 왼쪽으로 미는 것이므로 B 두개를 붙이면 완성되는 A의 위치가 

완성되기까지의 민 횟수가 된다.

 

미는 칸 수와 방향이 달라지면 이 방법은 못쓰게 되겠지만

푼 방법이 기발해 따로 정리해봤다.

728x90