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