Lv.0 - 문자열 밀기_01.03

송철진·2023년 1월 3일
0

문제 설명

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

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

입출력 예

ABresult
"hello""ohell"1
"apple""elppa"-1

나의 코드

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

풀이

A와 B가 동일한 경우 밀기를 할 필요가 없다 (테스트 3번)

if(A === B) return 0

문자열을 split()으로 쪼개서 만든 배열을 a라고 할 때
가장 오른쪽에 있는 요소를 가장 왼쪽에 삽입하는 방법:

let a = A.split("")
a.unshift(a.pop())  

이것을 a의 길이만큼 순회해서 a를 join()한 것과 B가 동일하면 순회 회차를 반환하고, 반환 없이 순회가 종료되면 B가 될 수 없으므로 -1을 반환한다

for(let i = 0; i<a.length; i++){
  	// 
    if(a.join("") === B) return i+1
}
return -1
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글