오늘 한 일
백준 3문제 풀기자바 강의 듣기
공부하면서 궁금한 점
다이나믹 프로그래밍(Dynamic Programing)
다이나믹 프로그래밍은 큰 문제를 작게 나누어 푸는 기법이다.
가장 큰 특징은 나누어 둔 작은 문제들을 한번씩만 풀어야 한다는 것이다.
즉, 작은 문제들의 결과를 배열에 저장시키고 그 결과를 사용하는 것이다.
접근 방법
접근 방법으로는 크게 두가지가 있는데
1. Bottom-up방식 (상향식)
-작은 문제부터 구해 나가며 큰 문제를 푸는 방식
-보통 for문을 많이 사용
2. Top-down방식 (하향식)
-큰 문제에서 필요할 때 작은 문제를 해결해 푸는 방식
-보통 재귀를 많이 사용
대표적으로 피보나치 수열이 있다
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
앞의 두 수를 더하면 다음 수가 되는 방식의 수열이다.
Top-down방식
// 피보나치 함수(Fibonacci Function)을 재귀함수로 구현
public static int fibo(int x) {
if (x == 1 || x == 2) {
return 1;
}
return fibo(x - 1) + fibo(x - 2);
}
Bottom-up방식
d[1] = 1;
d[2] = 1;
int n = 50; // 50번째 피보나치 수를 계산
for (int i = 3; i <= n; i++) {
d[i] = d[i - 1] + d[i - 2];
}
내일 할 일
- 백준 3문제풀기
- Spring강의 듣기
'TIL' 카테고리의 다른 글
23.01.26 TIL MVC패턴 (0) | 2023.01.27 |
---|---|
23.01.19 TIL 열거체 (0) | 2023.01.20 |
23.01.17 TIL String 리터럴과 new의 차이 (0) | 2023.01.18 |
23.01.12 TIL 백준 14225 문제 (Java) (0) | 2023.01.13 |
23.01.11 TIL 예외처리 (0) | 2023.01.11 |