문자열 밀기
문자열 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 명
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[C++] 숫자 문자열과 영단어 (0) | 2023.05.23 |
---|---|
[C++] 유한소수 판별하기 (0) | 2023.05.22 |
[C++] (공백분리) 컨트롤 제트 (1) | 2023.05.19 |
[C++] 소인수분해, 7의 개수 (0) | 2023.05.18 |
[C++] 중복된 문자 제거, 가장 큰 수 찾기 (0) | 2023.05.17 |
댓글