https://school.programmers.co.kr/learn/courses/30/lessons/120921#
[ 문제 설명 ]
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고
밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
[ 문제 풀이 ]
첫번째 풀이
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. changeString 변수에 저장 : A를 오른쪽으로 한 칸 밀기 위해 A의 마지막 문제를 제외한 나머지 부분 (A.slice(0, -1))
3. (A.charAt(A.length - 1).concat(changeString) : A의 마지막 문자와 changeString을 연결하여 A 갱신
4. countString 변수를 증가
5. A !== B가 동일할 수 없는 경우 => A.length === countString : return -1
두번째 풀이
let solution=(a,b)=>(a+a).indexOf(b)
1. a+a : a와 동일한 a 문자를 추가하여 새로운 문자 생성
2. indexOf(b) : 새로 생성된 문자에서 b를 찾는다 없으면 return -1
'프론트엔드로 가는 길 > 프로그래머스' 카테고리의 다른 글
46. 로그인 성공 (1) | 2023.04.21 |
---|---|
45. 특이한 정렬 (1) | 2023.04.20 |
43.등수매기기 (0) | 2023.04.19 |
42. 치킨 쿠폰 (1) | 2023.04.17 |
41. 프로그래머스_제곱수 판별하기 (0) | 2023.02.15 |