[프로그래머스] 문자열 밀기 (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 |