[프로그래머스 / C++] 문자열 밀기

YH·2023년 7월 21일
0

문제

문자열 밀기 : 문제 링크


문제 분석

  • 문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨앞으로 이동시키면 "ohell"이 되고, 이것을 문자열을 민다고 정의
  • 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return
  • A와 B가 똑같다면 문자열을 밀 필요가 없으므로 if문을 통해 0을 return
  • for문에서 index를 1로 시작하여 그것을 미는 횟수로 사용. 문자 변수 s에 A 문자열의 마지막 문자를 저장하고, A 문자열에는 substr() 함수를 사용하여 마지막 문자를 제외하고 저장. s를 제일 앞자리에 붙인후에 A와 B를 비교했을 때, 동일하다면 i를 return하고, 그렇지 않다면 for loop를 계속 순환.
  • for loop를 탈출했다면 B가 될수 없음을 의미하므로 -1을 return

substr() 함수 사용법
1. substr(시작인덱스, 문자열 길이)
=> 시작인덱스 부터 주어진 문자열 길이만큼 추출
2. substr(시작인덱스)
=> 시작인덱스 부터 문자열 끝까지 추출


풀이

#include <string>

using namespace std;

int solution(string A, string B) {
    if(A == B) return 0;
    for(int i = 1; i < A.size(); i++) {
        char s = A[A.size() - 1];
        A = A.substr(0, A.size() - 1);
        A = s + A;
        if(A == B) return i;
    }
    return -1;
}
profile
Keep Recycling Your Dreams

0개의 댓글