View

반응형

문제

풀이

문제에서 요구하는 것은 설탕을 정확하게 최소한으로 가져갈 수 있는 봉지의 수이다.

그렇다면 3Kg봉지와 5Kg봉지 중 5Kg봉지를 가장 많이 쓰는 것이 최적해가 될 것이다.

이 문제는 접근 방법에 따라 쉬울수도 어려울수도 있는 문제인 것 같다.

예를들면, N킬로그램을 구하기 위해 더하는 방법으로 접근한다면

경우의 수가 굉장히 많아져서 최적해를 찾아내기 어려워진다.

접근방법으로 N킬로그램부터 3Kg씩 빼면서 5Kg의 배수를 찾아내면 굉장히 쉽게 풀린다.

코드

import java.util.Scanner;

/*
    설탕 배달
 */
public class baekjoon_설탕배달 {
    public static void main(String[] args) {
        int n, answer = 0;

        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();

        while(true) {
            // 만약 n이 5의 배수라면 answer에 5로 나눈 몫을 더하고 종료.
            if (n % 5 == 0) {
                answer += n/5;
                break;
            }
            // n이 3보다 작아지는 시점, 즉 2이하일 때
            // 3과 5로 나누어 떨어지지 않는 수로 판단, 답은 -1
            if (n < 3) {
                answer = -1;
                break;
            }
            // 5킬로그램 자루로 최대한 많이 가져가는게 최적해이기 때문에
            // n에서 3을 빼면서 5의 배수에 해당되는지를 무한 루프로 검사한다.
            n -= 3;
            answer += 1;
        }
        System.out.println(answer);
    }
}
반응형
Share Link

인기 글

최신 글

전체 방문자

Today
Yesterday