[프로그래머스] 문자열 밀기 (JS)

2022. 11. 28. 07:46코딩테스트

728x90

[프로그래머스] 문자열 밀기 JavaScript

👉 문제설명

문자열 "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
 
 

👉 입출력 예 설명

입출력 예 #1

  • "hello"를 오른쪽으로 한 칸 밀면 "ohell"가 됩니다.

입출력 예 #2

  • "apple"은 몇 번을 밀어도 "elppa"가 될 수 없습니다.

 

👉 풀이

첫 번째 풀이

가장 앞에있는 문자를 맨 뒤에 위치시키고 2번째부터 마지막까지 잘라서 코드를 짰다.

function solution(A,B) {
    let num = 0;
    let b = B;
    while(b !== A){
        b = b+b[0];
        b = b.slice(1, b.length+1);
        if(A.length === num){
            return -1
        }
        num++;
    }
    return num;
}

참고 풀이 

위 풀이를 아래 풀이처럼 짧게 만들 수 있다. 

B+B <- B를 두번 반복한 후에 indexOf 로 A가 어디 위치하는지를 확인하면 해당 값을 도출해낼수 있다. 

A 단어를 밀어도 B가 될 수 없는 경우에는 indexOf 에서 값이 없을 때도 -1 를 리턴해주기 때문에 쉽게 코드를 짤 수 있다.

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

 

728x90

'코딩테스트' 카테고리의 다른 글

[프로그래머스] 모음 제거 (JS)  (0) 2022.11.27
[프로그래머스] 순서쌍의 개수 (JS)  (0) 2022.11.27