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

 

이런식으로 답을 찾을 수 있네요

 

아 ㅋㅋ 또 나만 바보지 

 

반응형