Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코딩테스트
- sort
- 임베디드 딥러닝
- dfs
- bfs문제
- 포스코 교육
- 컴퓨팅사고
- 알고리즘
- tflite
- 삼성역테
- 삼성역량테스트
- DP
- 포스코 AI교육
- DP문제
- TensorFlow Lite
- MCU 딥러닝
- 코테
- 삼성코딩테스트
- 코테 문제
- tinyml
- 초소형머신러닝
- 포스코 ai 교육
- dfs문제
- 자료구조
- 그리디
- BFS
- 다이나믹프로그래밍
- 딥러닝
- 삼성코테
- 영상처리
Archives
- Today
- Total
코딩뚠뚠
[기본문제풀이] dynamic_programming 본문
반응형
풀이 일시 : 2020-08-08
다이나믹프로그래밍 :
하나의 문제는 단 한번만 풀도록 하는 알고리즘으로 효율성을 개선하는 알고리즘이다.
가정1 - 큰 문제를 작은 문제로 나눌 수 있다.
가정2 - 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 작동한다.
이미 계산한 결과는 배열에 저장함으로써 나중에 꺼내서 쓰기만 하면 되게끔 한다.
문제 :
dp로 피보나치 구현
풀이 :
#include <stdio.h>
int d[100] = { 0, }; //배열 선언 및 전체 0으로초기화
int fibonacci(int x) {
if (x == 1) return 1; //1과 2는 피보나치에서 뭘 더해서 나오는 수가 아니기때문에 거른다
if (x == 2) return 1;
if (d[x] != 0){
return d[x]; //목표치 배열이 생성됐으면 값반환
}
return d[x] = fibonacci(x - 1) + fibonacci(x - 2); //구한 값을 배열 d에 저장
}
int main() {
printf("%d", fibonacci(50));
}
참고 개념정리
반응형
'알고리즘 문제풀이 > 기본문제풀이' 카테고리의 다른 글
[기본문제풀이] dijkstra algorithm (0) | 2020.12.28 |
---|---|
[기본문제풀이] 에라토스테네스의 체 (0) | 2020.12.28 |
[기본문제풀이] traversal (0) | 2020.12.28 |
[기본문제풀이] union_find (0) | 2020.12.28 |
[기본문제풀이] kruskal_algorithm (0) | 2020.12.28 |