상근이는 왜 최대한 적은 봉지로 배달하려고 해서 날 힘들게 하는걸까? 그냥 되는대로 배달할 것이지.. 어차피 무게는 같구만..
package baekjoon;
import java.util.Scanner;
public class Main_2839 {
static int[] dp;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
dp = new int[N+1];
System.out.println(dp(N));
}
public static int dp(int n) {
if (n == 4 || n == 7) {
return -1;
}
else if (n % 5 == 0) {
return (n / 5);
}
else if (n % 5 == 1 || n % 5 == 3) {
return (n / 5) + 1;
}
else if (n % 5 == 2 || n % 5 == 4) {
return (n / 5) + 2;
} else {
return -1;
}
}
}
이건 사실 dp라기보다 수학적 규칙찾기에 더 가까워서 풀이랄게 딱히 없다. 그것이 dp인걸까..? n이 5로 나눠진다면 무조건 5로 나눠 반환한다. 왜냐하면 가장 큰 수로 나뉘기 때문에 적은 봉지를 배달할 수 있기 때문.. 5로 나눴을때 1이나 3이 남았다? 그럼 5로 나누고 3짜리 설탕봉지를 하나 가져가면 된다. 8과 11 처럼! 2나 4가 남는다? 5로 나누고 두봉지 가져간다. 12나 14처럼 (3+3+3+3 , 3+3+3+5)
이런 수학적규칙..