본문 바로가기

Algorithm/Brute Force

(Python3) - 프로그래머스(코딩테스트 입문) : 문자열 밀기

반응형

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

전수조사 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. 정답변수 answer 선언 후 -1로 초기화합니다.

 

2. 옮긴 횟수 cnt선언 후 0으로 초기화합니다.

 

3. A_copy를 선언 후 A를 복사합니다.

📔 풀이과정

1. A_copy의 길이만큼 오른쪽으로 한 칸씩 밀면서 A_copy가 B와 같은지 비교합니다. 만약 같다면 answer를 cnt로 갱신하고 break합니다.

 

2. A_copy가 원복되었으므로 왼쪽으로 한 칸씩 밀면서 같은지를 비교해줍니다. 만약 같다면 기존 answer와 cnt의 최솟값을 answer에 저장합니다.

📔 정답 출력 | 반환

answer를 반환합니다.


📕 Code

📔 Python3

def solution(A, B):
    answer = -1
    cnt = 0
    A_copy = A
    # 오른쪽으로 밀기
    for i in range(0, len(A_copy)+1):
        if A_copy == B:
            answer = cnt
            break
        A_copy = A_copy[-1] + A_copy[0:len(A_copy)-1]
        cnt += 1
    cnt = 0
    # 왼쪽으로 밀기
    for i in range(0, len(A_copy)+1):
        if A_copy == B:
            if cnt != 0:
                answer = min(answer, cnt)
            break;
        A_copy = A_copy[1:] + A_copy[0]
    return answer

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.