https://www.acmicpc.net/problem/2839
dp는 메모리는 많이 차지하나, 빨리 푸려고 쓸 때 쓰는 방법
dp 문제 풀 때 tip -> 문제에서 제시된 범위 ex( 2<x<100)를 하나씩 다 해보는 것
[백준 2839] 설탕배분
n | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3kg 봉지 몇개? | 1 | x | 0 | 2 | x | 1 | 3 | 0 | 2 | 4 | 1 | 3 | 0 | 2 | 4 | 1 | 3 | 0 | 2 | 4 | 1 | ||
5kg 봉지 몇개? | 0 | x | 1 | 0 | x | 1 | 0 | 2 | 1 | 0 | 2 | 1 | 3 | 2 | 1 | 3 | 2 | 4 | 3 | 2 | 4 | ||
답 | 1 | -1 | 1 | 2 | -1 | 2 | 3 | 2 | 3 | 4 | 3 | 4 | 3 | 4 | 5 | 4 | 5 | 4 | 5 | 6 | 5 | ||
범위를 다 해보고 알게된 것:
4와 7은 예외
n이 3, 5는 답이 1개
n이 6,8,10 는 답이 2개
n이 9, 11, 13, 15는 답이 3개
n이 12, 14, 16, 18, 20는 답이 4개
n이 17, 19, 21, 23, 25는 답이 5개
규칙:
n = 5, 10, 15 (n % 5 == 0) 의 count 값은 n / 5
n = 6, 11, 16 (n % 5 == 1) 그리고 8, 13, 18 (n % 5 == 3) 의 count 값은 n / 5 +1
n = 12, 17 (n % 5 == 2) 그리고 9, 14, 19 (n % 5 == 4) 의 count 값은 n / 5 +2
package till;
import java.util.Scanner;
public class Main {
static int n;//봉지 킬로그램
static int k;
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
n= scan.nextInt();
int result = SugarBag(n);
System.out.println(result);
}
public static int SugarBag(int x) {
int bags=0;
//4와 7은 예외
if(x==4||x==7)
return -1;
if(x%5==0)
bags=x/5;
if(x%5==1 || x%5==3)
bags=x/5+1;
if(x%5==2 || x%5==4)
bags=x/5+2;
return bags;
}
}
'ALGORITHM > DP' 카테고리의 다른 글
[JAVA] 백준 2293번 (0) | 2019.06.02 |
---|---|
Dynamic Programming 수업 필기 (0) | 2018.12.17 |
Comments