본문 바로가기
알고리즘/DP

[java 백준] 실버 3/ 2579번 계단오르기

by Meaning_ 2021. 8. 5.
728x90
반응형

https://www.acmicpc.net/problem/2579

 

2579번: 계단 오르기

계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점

www.acmicpc.net

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
32
33
34
import java.util.Scanner;
 
public class Main {
 
    public static int n;
 
    public static int[] arr;
    public static int[] dp;
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        arr = new int[n + 3];
        dp = new int[n + 3];
 
        for (int i = 1; i <= n; i++) {
 
            arr[i] = sc.nextInt();
 
        }
        dp[1= arr[1];
        dp[2= arr[2+ arr[1];
        dp[3= Math.max(arr[1+ arr[3], arr[2+ arr[3]);
        for (int i = 4; i <= n; i++) {
            dp[i] = Math.max(dp[i - 3+ arr[i - 1+ arr[i], dp[i - 2+ arr[i]);
        }
 
        System.out.println(dp[n]);
 
    }
 
}
 
cs

https://we1cometomeanings.tistory.com/85

 

[java 백준] 실버 1/ 2156번 포도주 시식

https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을

we1cometomeanings.tistory.com

2156번 포도주시식 문제랑 문제푸는 방식이 비슷했다! 

근데 중요한 것은 마지막 계단은 꼭 밟아야 하는데 첫번째 계단은 굳이 안밟아도 된다!

 

dp[3= Math.max(arr[1+ arr[3], arr[2+ arr[3]);

그래서 위와 같은 코드가 나오는 것이다.  첫번째 세번째를 밟는경우, 두번째 세번째를 밟는 경우 중 가장 큰 값을 고르면된다. 

 

만일 n이 4이고 계단이 10 20 15 25 순으로 있을 때, 점화식을 세울 수 있는 방법은

 

분홍, 파랑 중에서 더 큰 값을 택하면 된다. 

여기서 첫번째 계단을 더해준 것은 반드시 넣어야 하는 것이 아닌 첫번째 계단을 더해줘야 계산한 값이 더 커지기 때문이다!

728x90
반응형

댓글