본문 바로가기
ALGORITHM/DP

[JAVA] 백준 2839번

by sjs_2215 2019. 1. 27.

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


dp는 메모리는 많이 차지하나, 빨리 푸려고 쓸 때 쓰는 방법

dp 문제 풀 때 tip -> 문제에서 제시된 범위 ex( 2<x<100)를 하나씩 다 해보는 것


[백준 2839] 설탕배분

n345678910111213141516171819202122232425
3kg 봉지 몇개?1x02x1302413024130241
5kg 봉지 몇개?0x10x1021021321324324
1-112-12323434345454565

범위를 다 해보고 알게된 것:

  • 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