https://school.programmers.co.kr/learn/courses/30/lessons/120921#
(문제 설명)
프로그래머
코드 중심 개발자를 모집합니다. 스택 기반 위치 일치. 프로그래머의 개발자별 프로필에 등록하고 귀하와 기술 호환성이 좋은 회사와 연결하십시오.
Programmers.co.kr
문자열 “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을 반환합니다.