알고리즘
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도 딱히 사용할 때 어렵진 않은 것 같다.
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! 다른 방법 좀 찾아보자.
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! 검사할 필요가 없는 것들은 건너뛰고 반씩 반씩 범위를 바로바로 좁혀나가니까 빨라지는 것이 당연한 것 같다.
하루를 마치고
크~ 드디어 수료식을 마쳤다!!! 근데 난 아직 아무것도 모른다는 것이 슬프다... 그래도 동기들과 회식도 하고 피시방도 가니 드디어 쉬는 느낌이 났다.
조만간 정글 회고록이나 한 번 올려야겠다.