728x90
반응형
문자열 밀기
문제설명 :
문자열 "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 |
"atat" | "tata" | 1 |
"abc" | "abc" | 0 |
접근
: 단순하게 접근했다. A문자열의 마지막 알파벳을 맨 앞으로 두기 위해 A을 배열로 만들어 pop()과 unshift()를 사용했다. count의 값이 A의 마지막 인덱스와 같을 때 까지 while문을 돌리며 A의 문자 순서를 바꿔 한바퀴 돌렸다. 배열 메서드를 사용해 문자의 순서를 바꾼 후 배열을 요소를 합쳐 B와 같은지를 확인하였다. 맞으면 count에 +1을 더해주었고 한 바퀴를 돌려도 맞지 않으면 -1을 반환했다. 처음엔 에러를 반환했다. 이유는 처음부터 A와 B가 같은 경우가 있기 때문이었다. 그래서 if문을 사용해 해당 부분에 대한 처리를 해주었다.
function solution(A, B) {
if(A === B) return 0
A = A.split('')
let count = 0
while(count !== A.length - 1){
A.unshift(A.pop())
if(A.join('') === B) return count+1
count++
}
return -1
}
solution
let solution=(a,b)=>(b+b).indexOf(a)
// 와.... 이걸 이렇게 푸네... 공부해야겠다.
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
JS Practice) 프로그래머스 : 다항식 더하기 (0) | 2023.04.17 |
---|---|
JS Practice) 프로그래머스 : 등수 매기기 (0) | 2023.04.14 |
JS Practice) 프로그래머스 : 특이한 정렬 (0) | 2023.04.12 |
JS Practice) 프로그래머스 : 저주의 숫자 3 (0) | 2023.04.11 |
JS Practice) 프로그래머스 : 치킨 쿠폰 (0) | 2023.04.10 |