CS 기본 이론/algorithm
- 경우의 수 탐색하기 2019.10.27
- Dynamic Programming 2019.10.25
- 메모이제이션 2019.10.25
- 다시 할 목록들 2019.10.25
- 무식하게 풀기 2019.10.24
경우의 수 탐색하기
2019. 10. 27. 17:44
Dynamic Programming
2019. 10. 25. 19:13
메모이제이션
2019. 10. 25. 19:10
구조
1) 초기화
2) 기저 사례 처리
3) 이미 처리한 값인지 확인(초깃값인지 확인)
4) 계산
시간 복잡도 : 부분 문제의 수 * 부분 문제를 처리하는데 걸리는 시간
메모이제이션을 위해서는 *참조적 투명성* 필요.
함수의 입력값에만 의해서 값이 결정됨.
전역 변수 등의 영향을 받지 않음
비둘기 집의 원리
- 경로는 무수히 많을 수 있지만, 입력의 수는 경로보다 적은 경우, 메모이제이션이 유용할 수 있음
배열의 크기를 하나 더 키워서
첫번째 인덱스를 -1이나 0을 넣어서 예외상황/초깃값 처리를 쉽게 할 수 있다.
관련 문제 : 가장 긴 부분 증가 수열(구종만 p.234 nlog n 해법 다시 공부하기)
'CS 기본 이론 > algorithm' 카테고리의 다른 글
경우의 수 탐색하기 (0) | 2019.10.27 |
---|---|
Dynamic Programming (0) | 2019.10.25 |
다시 할 목록들 (0) | 2019.10.25 |
무식하게 풀기 (0) | 2019.10.24 |
Path Sum (0) | 2019.10.23 |
다시 할 목록들
2019. 10. 25. 18:00
quad tree
p.244 quantization
배열 A를 s개의 숫자로 양자화
-> 오차의 합을 최소로할 때, 오차합 구하기
1) 배열을 s개의 집합으로 나누고
2) 각 집합에서 적정한 숫자를 찾아, 오차합 구하기
1) s개의 집합을 구하기 : 부분 문제
2) 적정한 숫자 : 평균, 오차합: 부분합 이용
p.256 우물을 기어오르는 달팽이
문제를 분할 할때:
1) 모든 경우를 포함한다
1) 두 경우에 동시에 포함되는 경우는 없다.
'CS 기본 이론 > algorithm' 카테고리의 다른 글
경우의 수 탐색하기 (0) | 2019.10.27 |
---|---|
Dynamic Programming (0) | 2019.10.25 |
메모이제이션 (0) | 2019.10.25 |
무식하게 풀기 (0) | 2019.10.24 |
Path Sum (0) | 2019.10.23 |
무식하게 풀기
2019. 10. 24. 13:26
완전 탐색
기저 사례 작성 -> 반복 제거
dx, dy를 별도의 변수로 분리하자
중복 제거 : 순서를 강제하기
'CS 기본 이론 > algorithm' 카테고리의 다른 글
경우의 수 탐색하기 (0) | 2019.10.27 |
---|---|
Dynamic Programming (0) | 2019.10.25 |
메모이제이션 (0) | 2019.10.25 |
다시 할 목록들 (0) | 2019.10.25 |
Path Sum (0) | 2019.10.23 |