본문 바로가기
알고리즘/프로그래머스

[C++] 문자열 밀기

by parkkingcar 2023. 5. 22.

 

문자열 밀기

문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return

 

예를 들어 A가  "hello" B가 "ohell" 이면 hello를 우측으로 1번 민다고 생각하면 됩니다.

 

A를 한칸씩 우측으로 밀어보면서 B와 비교하여 풀었는데, 다른사람의 풀이를 보고 감탄을 하여 바로 가져왔습니다.

 

나의 풀이

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(string A, string B) {
    int answer = 0, b = A.size();
    string a = "";
    if(A == B) return 0;
    else{
        for(int i = 0; i < b; i++){
            a = "";
            answer ++;
            a += A[b-1];
            for(int j = 0; j < b -1; j++){
                a += A[j];
            }
            if(a == B){
                return answer;
            }
            else{
                A = a;
            }
        }
        return -1;
    }
}

 

 

다른 풀이

A 문자열이 한 번은 나와야하므로  B를 두번 붙이고 그 안에서 A를 찾는다라니... 대단합니다

 

#include <string>

using namespace std;

int solution(string A, string B)
{
    B += B;
    return B.find(A);
}

// 김규태 , real , 김재혁 , 김건우 외 2 명

 

댓글