Bleeding edge

[LeetCode]796. Rotate String - 자바스크립트 0609 본문

코딩테스트 공부

[LeetCode]796. Rotate String - 자바스크립트 0609

codevil 2022. 6. 9. 11:18

https://leetcode.com/problems/rotate-string/

 

Rotate String - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

goal의 첫번째 문자를 빼서 맨 뒤에 push한 후에, s와 비교를 하는 것을 s.length만큼 반복한 뒤 둘이 같지 않다면, false를, 중간에 같은 값이 있다면 true를 반환하는 문제이다.

1; shift

문제를 풀이하면서 알게된건, 문자열의 경우 shift가 안된다는 것이 었다.

shift is not a function!

shift는 Array.prototype.shift 즉, 정렬에서만 사용할 수 있기 때문에, 주어진 s를 split("")을 하면 shift가 가능하다. 그러나 split하고 join하고 push하고 하는 것은 매우 번거로우니, 다른 방법을 선택했다.

2. [...goal.slice(1), goal[0]]

getCombination에서 자주 보이는 모양새이다. 이 역시 정렬로 나오기때문에 push의 과정은 없더라도 join을 매번해줘야 하기때문에 다른 방법으로..

3. goal.slice(1) + goal[0]

문자열로 반환되기 때문에 이로 진행하였다.

전체 풀이

var rotateString = function (s, goal) {
    if(s.length!==s.length)return false
    for (let i = 0; i < s.length; i++) {
        if (s === goal) return true
        goal = goal.slice(1) + goal[0]
    }
    return false
};

문제 풀이 자체는 심플했으나, xxx is not a function이 왜 뜨는지 공부를 한 것에 대해서 왜 떴고, 이를 어떻게 해결할 것인지에 대해서 고민을 해볼 수 있었다.