Today I Learned
1. Dynamic Programming
- 동적 계획법은
여러 개의 하위 문제를 풀고 그 결과를 기록하고 이용해 문제를 해결하는 알고리즘
즉, 재귀함수를 풀어나갈 때 많이 했던 함수의 수식화를 시키면 된다.
F(string) = F(string[1:n-2]) 라고 수식을 정의했던 것 처럼,
문제를 쪼개서 정의할 수 있으면 동적 계획법을 쓸 수 있다!
이처럼 문제를 반복해서 해결해 나가는 모습이 재귀 알고리즘과 닮아있다.
그러나 다른 점은, 그 결과를 기록하고 이용한다는 점.
결과를 기록하는 것을 메모이제이션(Memoization) 이라고 하고,
문제를 쪼갤 수 있는 구조를 겹치는 부분 문제(Overlapping Subproblem)라고 한다
각 구간마다의 시간을 계산하면 최적의 시간을 구할 수 있는 것을 겹치는 부분 문제,
이미 실험했던 내용은 기록해두고 쓰면 된다는 것을 메모이제이션 이라고 생각하면 된다
즉, 겹치는 부분 문제일 경우 동적 계획법을 사용하면 되는데,
이 때 사용하는 방법이 메모이제이션.
예시로 푼 문제
- BOJ-1932 : https://www.acmicpc.net/problem/1932
- BOJ-14501 : https://www.acmicpc.net/problem/14501
2. 모던 자바스크립트 Deep Dive :
5장 표현식과 문
값(value) : 값은 식(표현식)이 평가되어 생성된 결과.
리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법
표현식 : 값으로 평가될 수 있는 문(statement). 표현식이 평가되면 새로운 값을 생성하거나 기존값을 참조.
문 : 프로그램을 구성하는 기본 단위이자 최소 실행 단위.
To Do
-
이코테: 구현(2/2)
-
完) Codewars - Even or Odd, Returning Strings, Friend or Foe?
-
完) BOJ 오늘의 문제 - no.1110
-
完) solved class 1 - no.2675, no.2739, no.2741, no.2742, no.2753, no.2884
-
完) Programmers level 1 - 42840
Today's Short Report
DP 너무 어렵다.. 문제를 보면 감도 안잡힌다 하.. 내일은 DP 뽀개기 도전