백준 2839번 (2회차 DP)

김경욱·2025년 10월 1일

백준

목록 보기
95/121

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

import java.net.Inet4Address;
import java.util.*;

import static java.util.Collections.*;

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[] dp = new int[N+1];
    Arrays.fill(dp,5000);
    dp[0] = 0;

    for (int i = 1 ; i <= N; i++)
    {
       if (i>=3) dp[i] = Math.min(dp[i],dp[i-3]+1);
       if (i>=5) dp[i] = Math.min(dp[i],dp[i-5]+1);
    }

    if (dp[N] == 5000)
    {
        System.out.println(-1);
        return;
    }
    System.out.println(dp[N]);




}
}

이번엔 DP로 풀어보았다. 내 기준에서는 훨씬 직관적인 것 같다. 1회차보다.
맨 처음에 보든 배열에 5000이라는 값을 넣은 후 DP의 값을 그 후에 넣는다. 만약 DP의 값이 5000이면 값이 배정이 안된 것이므로 -1을 출력한다.

0개의 댓글