티스토리 뷰
Bottom up 방식
#include<bits/stdc++.h>
using namespace std;
int dy[10];
int main() {
ios_base::sync_with_stdio(false);
ifstream cin;
cin.open("input.txt");
int n;
cin >> n;
dy[1]=1;
dy[2]=2;
for(int i=3; i<=n; i++){
dy[i]=dy[i-1]+dy[i-2];
}
cout<<dy[7];
return 0;
}
제일 작은 값을 구하고 그 값을 통해 다음값을 얻는 방식이다.
Top down 방식
#include<bits/stdc++.h>
using namespace std;
int dy[10];
int DFS(int x){
if(dy[x]>0) return dy[x];
if(x==1 || x==2) return x;
else {
return dy[x]=DFS(x-1)+DFS(x-2);
}
}
int main() {
ios_base::sync_with_stdio(false);
ifstream cin;
cin.open("input.txt");
int n;
cin >> n;
cout<<DFS(n);
return 0;
}
DFS를 통해 제일 큰값부터 접근하는 방법이다.
dy배열에 이미 값이 나온 것들은 저장하면서 진행되기 떄문에 실행시간을 줄일 수 있다.
'lecture > algorithm - c++' 카테고리의 다른 글
[c++] 가장 높은탑쌓기 (0) | 2021.02.07 |
---|---|
[c++] 최대부분 증가수열 (0) | 2021.02.04 |
[c++] map 사용하기, iterator 사용 (0) | 2021.01.31 |
[c++] 네임스페이스(namespace), using namespace std (0) | 2021.01.31 |
[c++] 라이언킹 심바(BFS) (0) | 2021.01.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 구조체
- stackframe
- Java
- BFS
- 병행프로세스
- 알고리즘
- 퀵정렬
- server side rendering
- client side rendering
- 스텍
- C++
- 최단경로
- 클래스
- react
- 세마포어
- C
- 교착상태
- 입출력장치
- Stack
- 자료구조
- 동적프로그래밍
- 배열
- dfs
- 인접리스트
- javascript
- 운영체제
- 이진탐색
- 재귀함수
- 소프트웨어
- 인접행렬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함