programmers
[Programmers Level 0] 문자열 밀기 Javascript
냠냠맨
2022. 11. 30. 20:22
문제정보
레벨은 0인데 꽤나 어려웠던 문제입니다.
일단 오른쪽으로 한칸씩 밀고 마지막 문자는 맨 앞으로 이동시켜야하는군요
pop()을 해서 마지막 문자를 뽑아주고 그걸 unshift()로 맨 앞에 넣어주는 식으로
구현할 수 있을 것 같았습니다.
민 횟수를 답으로 반환해야하니 민 횟수를 계산해줄 카운터도 필요하겠네요
예시
A B result
"hello" "ohell" 1
"apple" "elppa" -1
만약 아무리 위치를 돌려도 안되는 경우엔 -1을 반환해주면 되는군요
나의풀이
function solution(A, B) {
let counter = 0
let Asplit = A.split('')
for(i=0;i<A.length;i++) {
if(A==B) return 0
Asplit.unshift(Asplit.pop())
counter++
if(Asplit.join('') == B) {
return counter
}
}
return -1
}
pop과 unshift를 사용할거니까 A를 배열로 만들어줬습니다.
A와 B가 처음부터 같은 경우를 처리해주기 위해 if문을 하나 걸어줬고
if문으로 비교해주면서 답을 찾으면 counter를 못찾으면 -1을 반환하게 코드를 짰습니다.
생각을 해보니까 카운터없이 i+1을 반환해도 될것같기도하네요
다른사람의 풀이
let solution=(a,b)=>(b+b).indexOf(a)
만약 A가 HELLO B가 OHELL인 케이스로 생각하면
let solution=(a,b)=>(b+b).indexOf(a)
b+b => OHELLOHELL
.indexOf(a) => 1
이런식으로 답을 찾을 수 있네요
아 ㅋㅋ 또 나만 바보지
반응형