181015 TIL Lec3 할일관리 step2

» 1막, TIL (Today I Learned)

알고리즘

문제: 124 나라의 숫자 -> 토르코가 많이 도와줘서 풀긴 풀어보았당… image

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

  1. lec3 강의 복습
  2. 124 나라의 숫자 풀기
  3. lec3 step2 수정
  4. 시간되면 CS50


10/16(Tue) todo

  1. 알고리즘 스터디
  2. lec3 step2 수정?
  3. lec3 강의 복습
  4. 탐험