코딩 테스트 문제의 핵심은 for문 안에서 약수의 개수를 얼마나 효율적으로 구할 수 있는 가 였다.
처음 작성한 코드
//num의 절반까지 계산한다
function countDivisor(num){
let count = 0;
for(let i = 1; i <= num / 2; i++){
if(num % i === 0 ) count++;
}
count++;
return count;
}
수정한 코드
//num의 제곱근까지 계산한다
function countDivisor(num){
let count = 0;
for(let i = 1; i <= Math.sqrt(num); i++){
if(num % i === 0 ){
if(num / i === i) count += 1;
else count += 2;
}
}
return count;
}
sidebar.js
root
컴포넌트의 경우 부모가 없으므로 예상 되는 제품 페이지를 추가하기도 한다.refusing to merge unrelated histories
오류가 뜬다면git pull origin 브렌치명 --allow-unrelated-histories
const newTodoList = todoList.map((todo) => {
if (todo.id === 1) todo.isDone = !todo.isDone;
return todo;
})
튜터 님이 설명해주신 위 코드가 불변성이 지켜지지 않은 이유
const todoList = [{id: 1, isDone: false},{id: 2, isDone: false}]
/*
* todoList - 0x1
*
* todoList[0] - 0x10
* todoList[0].id - 0x11
* todoList[0].isDone - 0x12
*
* todoList[1] - 0x20
* todoList[1].id - 0x21
* todoList[1].isDone - 0x22
*/
// 0x2
const newTodoList = todoList.map((todo) => {
// newTodo - 0x30
// id - 0x11
// isDone - 0x50
return 1 === todo.id ? {...todo, isDone: !todo.isDone} : todo
// todo - 0x10
// id - 0x11
// isDone - 0x50 -> 불변성에 위배된다.
if (todo.id === 1) todo.isDone = !todo.isDone;
return todo;
})
let str = 'data1'; // 0x1 - 'data1'
str = 'data2'; // 0x2 - 'data2'
let arr = [1, 2, 3, 4] // 0x1 - [1, 2, 3, 4]
array.push(5) // 0x1 - [1, 2, 3, 4, 5]