프로그래머스 (JS)/Lv. 0

[Programmers] 120921번 - 문자열 밀기

hodo- 2023. 3. 9. 19:37

Problem

문제 보기

문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.


Solution

function solution(A, B) {
    let a = A.split('');
    
    for (let i = 0; i < A.length; i++){
        if(A === B) return 0;
        a.unshift(a.pop());
        
        if(a.join('') === B) return i+1;
    } return -1;
}

1. 문자열 매개변수 A를 배열로 변환한다
2. A와 B가 같을 경우 return 0
3. a의 마지막요소를 a의 맨 앞 요소에 둔다
4. 문자열 a가 B와 같다면 return i+1
5. for문을 다 돌렸는데도 A !== B라면 return -1  

다른 풀이를 보니까 더 간단했다

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

a가 포함되지 않는다면 -1
그리고 각 횟수도 잘 return 된다..