프로그래머스 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)
}

 

'프로그래머스 JS LV0' 카테고리의 다른 글

LV0 74 직사각형 넓이 구하기  (0) 2022.11.10
LV0 73 유한소수 판별하기  (0) 2022.11.09
LV0 71 캐릭터의 좌표  (0) 2022.11.08
LV0 70 문자열 계산하기  (0) 2022.11.08
LV0 69 영어가 싫어  (0) 2022.11.08