181015 TIL Lec3 할일관리 step2
Oct 15, 2018
»
1막,
TIL (Today I Learned)
알고리즘
문제: 124 나라의 숫자 -> 토르코가 많이 도와줘서 풀긴 풀어보았당…
function solution(n) {
const system = ['1', '2', '4'];
if (n > 0) {
return solution(Math.floor((n - 1) / 3)) + system[(n - 1) % 3];
}
return '';
}
- 여전히 저 재귀부분에서 어떻게 숫자가 쌓이는 지 잘 모르겠어서(분명 설명 들을 땐 아는 것 같았는데…) 내일 스터디에서 물어봐야지
문제: 피보나치 수 -> 예전에 했던 경험도 있고, 내가 처음부터 짜는 건 비효율적일 것 같아서 예전에 봤던 유튜브 참고하여 풀었다.
function solution(n) {
if (n === 1 || n === 2) {
return 1;
}
let arr = [0, 1, 1 % 1234567];
for (let i = 3; i <= n; i++) {
arr[i] = arr[i - 1] % 1234567 + arr[i - 2] % 1234567;
}
return arr[n] % 1234567;
lec3 step2 수정
- 매인 수정은 setTimeout을 재귀로 구현하는 것이었다.
// 안 재귀
showAll() {
const [todoCount, doingCount, doneCount] = this.CountStatus(this.taskList);
console.log(`총 ${todoCount + doingCount + doneCount}개의 리스트를 가져왔습니다. 2초 뒤에 todo 내역을 출력합니다...`);
setTimeout(function () {
console.log(`[todo, 총 ${todoCount}개]`);
let todoTasks = this.sortTaskByStatus('todo');
this.showAllPrint(todoTasks);
console.log(`\n 지금부터 3초 뒤에 doing 내역을 출력합니다...`);
setTimeout(function () {
console.log(`[doing, 총 ${doingCount}개]`);
let doingTasks = this.sortTaskByStatus('doing');
this.showAllPrint(doingTasks);
console.log(`\n 지금부터 2초 뒤에 done 내역을 출력합니다...`);
setTimeout(function () {
console.log(`[done, 총 ${doneCount}개]`);
let doneTasks = this.sortTaskByStatus('done');
this.showAllPrint(doneTasks);
}.bind(this), 2000);
}.bind(this), 3000);
}.bind(this), 2000);
},
// 재귀
showAll() {
const [todoCount, doingCount, doneCount] = this.CountStatus(this.taskList);
console.log(`총 ${todoCount + doingCount + doneCount}개의 리스트를 가져왔습니다. 2초 뒤에 todo 내역을 출력합니다...`);
const statusOrder = ['todo', 'doing', 'done'];
const CountOrder = [todoCount, doingCount, doneCount];
const timeOrder = [2000, 3000, 2000]
this.setTime(statusOrder, CountOrder, timeOrder, 0);
},
setTime(statusOrder, CountOrder, timeOrder, n) {
setTimeout(function () {
if (n > 2) {
return;
}
console.log(`[${statusOrder[n]}, 총 ${CountOrder[n]}개]`);
this.showAllPrint(this.sortTaskByStatus(statusOrder[n]));
if (n < 2) {
console.log(`\n 지금부터 ${timeOrder[n+1]/1000}초 뒤에 ${statusOrder[n+1]} 내역을 출력합니다...`);
}
this.setTime(statusOrder, CountOrder, timeOrder, n + 1)
}.bind(this), timeOrder[n]);
},
10/15(Mon) DONE
- lec3 강의 복습
124 나라의 숫자 풀기lec3 step2 수정- 시간되면 CS50
10/16(Tue) todo
- 알고리즘 스터디
- lec3 step2 수정?
- lec3 강의 복습
- 탐험