본문 바로가기
알고리즘/백준

[Java] 백준 2839번 설탕 배달

by 컴공맨 2021. 3. 24.
 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net


풀이

DP를 사용하여 해결했습니다.

 

N까지의 최소의 수를 구해야하기때문에 memo 배열을 Integer.MAX_VALUE로 초기화하여 만약 아무런 봉지를 선택안하거나 둘 중 하나만 선택하는 경우에서 잘못된 값이 들어가지 않게 했습니다.


코드

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

public class Main {
	public static int N;
	public static int[] memo = new int[5001];
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		N = Integer.parseInt(br.readLine());
		
		Arrays.fill(memo, Integer.MAX_VALUE);
		
		memo[3] = 1;
		memo[5] = 1;
		for (int i = 6; i <= N; ++i) {
			int min = Math.min(memo[i - 3], memo[i - 5]);
			
			if (min != Integer.MAX_VALUE) {
				memo[i] = min + 1;				
			}
		}
		
		System.out.println((memo[N] == Integer.MAX_VALUE) ? -1 : memo[N]);
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com