Notice
Recent Posts
Recent Comments
Link
04-27 00:53
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Gradle
- 맥북
- sts
- K-디지털트레이닝
- 글로벌소프트웨어캠퍼스
- M2
- 리눅스
- jdk
- AWS
- 도메인
- https
- springboot
- 맥
- route 53
- 우리FIS아카데미 #
- 우리에프아이에스 #
- 우리FISA #
- 우리FIS아카데미
- 클라우드 서비스 개발 #
- 우리FISA
- 클라우드 서비스 개발
- 로드밸런스
- mysql
- 맥OS
- HTTP
- spring
- 우리에프아이에스
- dbeaver
- Java
Archives
- Today
- Total
<<개발일지>>
[DP] 1. 계단오르기 본문
<<풀이>>
dp: 앞에 구한 값을 메모제이션으로 저장해두고 이를 이용해요 다음 단계에서 이용하는 방식이다.
그 중에서도 밑에서 올라가는 방식을 bottom-up 방법이다.
내가 DFS 방식과 헷갈렸었는데, 이 문제를 보고 와닿는다. DFS는 아예 재귀함수로 완전 깊이 아래까지 갔다가 오는 거라면 dp 같은 경우는 이미 이전의 값을 저장해두고 바로 활용하는 차이점이 있다. 그래서 dfs가 메모제이션을 활용하더라도 dp보다는 시간이 많이 걸리는 것이다.
import java.util.Scanner;
class Main {
static int[] dy;
public int solution(int n) {
dy[1] = 1;
dy[2] = 2;
for (int i = 3; i <= n; i++) {
dy[i] = dy[i - 2] + dy[i - 1];
}
return dy[n];
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
dy = new int[n + 1];
System.out.println(T.solution(n));
}
}
아직 dp에 대해 정확하게 안다고는 할 수 없다고 생각한다. 문제를 여러개 더 풀어보면서 내 것으로 만들자 !!
'코딩테스트' 카테고리의 다른 글
[백준/1004/실버3] 어린 왕자 (5) | 2024.03.12 |
---|---|
[백준/2941/실버5] 크로아티아 알파벳 (7) | 2024.03.05 |
[백준/1003/실버3] 피보나치 함수 (6) | 2024.03.01 |
[DFS] 7. 조합의 경우수(메모이제이션) (6) | 2024.02.26 |
[백준/1002/실버3] 터렛 (3) | 2024.02.25 |