문자열 밀기

Haizel·2023년 4월 25일
0

🧬 알고리즘 풀이

목록 보기
19/53
post-thumbnail

문제 설명

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

입출력 예

ABresult
"hello""ohell"1
"apple""elppa"-1
"atat""tata"1
"abc""abc"0

내 풀이

function solution(A, B) {
    if (A === B) return 0;
    for (let i = 1; i < A.length; i++) {
        const check = `${A.slice(A.length - i, A.length)}${A.slice(0, A.length - i)}`;
        if (check === B) return i;
    }
    return -1;
}

💡 코드풀이


  1. 엣지케이스로 → if (A === B) return 0 경우를 빼준다.
  2. 반복문을 돌면서 맨 뒤 문자를 빼서 앞으로 붙인 문자열 checkB가 같다면 i를 리턴한다.
  3. 만약 반복문에서 조건문을 통과하지 못했다면 -1을 리턴한다.

더 간략한 풀이

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

//또는 

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

💡 코드풀이


  1. B의 문자열을 두번 합친다.
  2. 그리고 A의 의 인덱스 번호를 리턴한다.
profile
한입 크기로 베어먹는 개발지식 🍰

0개의 댓글