44. 스트링 푸시

https://school.programmers.co.kr/learn/courses/30/lessons/120921#
(문제 설명)

문자열 “hello”에서 각 문자를 오른쪽으로 한 칸 이동하고 마지막 문자를 앞으로 이동하면 “ohel”이 됩니다. 문자열을 밀어넣는 것으로 정의하면 문자열 A와 B를 매개변수로 줄 때 A를 눌러 B가 될 수 있으면 밀어야 하는 최소 횟수를 반환한다.
B로 푸시할 수 없는 경우 솔루션 기능을 완료하여 -1을 반환하십시오.

(문제 해결)

첫 번째 솔루션

function solution(A, B) {
  let countString = 0;

  while (true) {
    if (A === B) {
      break;
    }
    let changeString = A.slice(0, -1); //hell
    A = A.charAt(A.length - 1).concat(changeString); //ohell
    countString++;
    if (A.length == countString) {
      return -1;
    }
  }
  return countString;
}

1. 무한 루프에서 A===B가 같을 때 루프 종료

2. 변경 문자열 변수에 저장 : A를 오른쪽으로 한 칸 밀어내는 A의 마지막 문제를 제외한 모든 문제 (A.슬라이스(0, -1))

삼. (A.charAt(A.길이 – 1).concat(변경 문자열) : A’s Ma마지막 문자를 changeString과 연결하여 A 업데이트

4. countString 변수 증가

5. A !== B가 같을 수 없는 경우 => A.길이 === countString : -1 반환

두 번째 해결책

let solution=(a,b)=>(a+a).indexOf(b)

1. ㄱ+ㄱ : 같은 문자 a를 a로 추가하여 새로운 캐릭터 생성

2. indexOf(b) : 새로 생성된 캐릭터에서 b를 찾고, 그렇지 않으면 -1을 반환합니다.