백준 2579번 (점화식) 다시 !!

김경욱·2025년 8월 25일

백준

목록 보기
60/121

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.*;

public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    int N = Integer.parseInt(br.readLine());

    int[] steps = new int[N+1];

int[] db = new int[N+2];

db[0] = 0;

    for (int i = 1; i <= N; i++)
    {

        steps[i] = Integer.parseInt(br.readLine());

    }

    db[1] = steps[1];

if (N>=2)
{

db[2] = Math.max(steps[1]+steps[2],steps[2]);

}

    //점화식을 사용하는 문제이다.!!

    for (int i = 3; i <= N; i++)
    {

        db[i] = Math.max(db[i-2], db[i-3]+steps[i-1]) + steps[i] ;

    }


    //db[4] = Math.max(db[2],db[1]+steps[3]) + steps[4] ;



    System.out.println(db[N]);





}

}

점화식을 세우는게 관건인 문제이고 또한 N이 2일경우에는 배열의 크기가 맞지 않아 런타임 오류가 난다. 이것을 다 생각해서 풀어야 하는 문제였다.

0개의 댓글