[TIL] 정글 136일차

신승준·2022년 8월 12일
0

알고리즘

리트코드

  1. 344 Reverse String (JavaScript)
var reverseString = function(s) {
    let start = 0;
    let end = s.length - 1;
    
    while (start < end) {
        [s[start], s[end]] = [s[end], s[start]]
        
        start += 1;
        end -= 1;
    }
    
    return s;
};

역시 파이썬에서 했던 것처럼 s[start], s[end] = s[end], s[start]으로는 swap이 되지 않는다. 다행히 자바스크립트에서의 swap도 딱히 사용할 때 어렵진 않은 것 같다.

  1. 367 Valid Perfect Square (JavaScript)
var isPerfectSquare = function(num) {
    if (num === 1) {
        return true;
    }
    
    let temp = num / 2;
    temp = parseInt(temp);
    
    for (let i = temp; i > 0; i--) {
        if (i * i === num) {
            return true
        }
    }
    
    return false;
};

완전 똥내 나게 풀었다. 속도가 엄청 느리다. sqrt와 같은 메서드를 쓰지 말라고 해서 일단 생각나는대로 이렇게 풀었는데 엄청 느리다. 무려 5473ms! 다른 방법 좀 찾아보자.

  1. 367 Vaild Perfect Square - 2 (JavaScript)
var isPerfectSquare = function(num) {
    let left = 0;
    let right = num;
    
    while (left <= right) {
        const mid = parseInt((left + right) / 2);
        if (mid ** 2 === num) {
            return true;
        } else if (mid ** 2 > num) {
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }
    
    return false;
};

리트코드의 Discuss에서 파이썬으로 이진 탐색 풀이한 게 있었다. 자바스크립트로 해봤는데 속도가 훨씬 빠르게 나온다. 80ms! 검사할 필요가 없는 것들은 건너뛰고 반씩 반씩 범위를 바로바로 좁혀나가니까 빨라지는 것이 당연한 것 같다.

하루를 마치고

크~ 드디어 수료식을 마쳤다!!! 근데 난 아직 아무것도 모른다는 것이 슬프다... 그래도 동기들과 회식도 하고 피시방도 가니 드디어 쉬는 느낌이 났다.

조만간 정글 회고록이나 한 번 올려야겠다.

profile
메타몽 닮음 :) email: alohajune22@gmail.com

0개의 댓글