프로그래머스 JS LV0

LV0 72 문자열 밀기

와라리요 2022. 11. 9. 14:33

문제 설명

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

 

제한사항

  • 0 < A의 길이 = B의 길이 < 100
  • A, B는 알파벳 소문자로 이루어져 있습니다.

 

입출력 예

A B result
"hello" "ohell" 1
:"apple" 'elppa" -1

 

나만의 풀이

  우선 문제를 A, B과 동일한지 비교하고 아니라면 B의 [0]의 글을 마지막으로 보내고 count에 +1를 하도 A와 B가 동일할 경우 break를 하는 형태로 for문을 이용해 코딩하고, 마지막으로 A !== B이면 -1를 반환하는 코드를 만들었다~~ 그냥 단순하게 조건문이랑 반복문을 이용해서 풀었다~~

function solution(A, B) {
    let count = 0;
    let arr = [...B];
    if (A === B) {
        return count;
    }
    for (let i = 0; i < A.length; i++) {
        arr.push(arr[0]);
        arr.shift();
        count += 1;
        if (A === arr.join('')) {
            break;
        }
    }
    if (A !== arr.join('')) {
        count = -1;
    }
    return count;
}

 

  그런데 충격을 받았다. 다른 분들의 풀이를 봤는데 1줄로 끝을 냈다. 나는 왜 B + B를 한 후 indexOf를 생각을 못했을까...?!?! 슬프다 ㅜㅜ 역시 창의력도 필요한 것 같다.

function solution(A, B) {
    return (B + B).indexOf(A)
}