문제 풀이(47)

Youngseon Kim·2023년 10월 27일

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

import java.io.*;
import java.util.*;


public class Main {

    static int N;
    static int[] dp;

    public static void main(String[] args) throws IOException {
        

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

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

        dp = new int[5000 + 1];

        dp[1] = -1;
        dp[2] = -1;
        dp[3] = 1;
        dp[4] = -1;
        dp[5] = 1;

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

            if ( (i-5)% 3 == 0 || (i-3) % 5 == 0) {
                dp[i] = Math.min(dp[i-3] + 1, dp[i-5] + 1);
              
                continue;
            }
         
            if (i % 3 == 0 && i % 5 != 0) {
                dp[i] = dp[i-3] + 1;
              
                continue;
            }
            if (i % 3 != 0 && i % 5 == 0) {
                dp[i] = dp[i-5] + 1;
               
                continue;
            }
            if (i % 3 == 0 && i % 5 == 0) {
                dp[i] = Math.min(dp[i-3] + 1, dp[i-5] + 1);
              
                continue;
            }

            if (dp[i-5] != -1 || dp[i-3] != -1) {
                dp[i] = Math.min(dp[i-5] + 1, dp[i-3] + 1);
              
                continue;
            }

            dp[i] = -1;
        }

     

        System.out.println(dp[N]);
    }
}

0개의 댓글