본문 바로가기
Algorithm/Baekjoon

[백준] 2839번 : 설탕 배달 - Java

by unknownomad 2022. 3. 26.

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

 

2839번: 설탕 배달

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

www.acmicpc.net



알고리즘

문제

봉지 개수 최소화

  • 최대한 5kg 봉지로 구성해야 함

 

순서

  1. 5로 나누어 떨어지는 수
  2. 5로 나누어 떨어지지 않는 수
  3.  (N / 5) 값과 (N % 5) 값 파악
  4. 예외 경우 파악

 

결론

크게 4가지 경우로 나누자

 

1. N == 4 or N == 7

  • 골드바흐의 추측 적용
  • 주어진 조건 : 3kg, 5kg
  • 주어진 두 소수 3, 5의 합인 8 이상의 모든 자연수는 소수의 합으로 나타낼 수 있음
  • ∴ 두 소수의 합 이하의 경우 제외, 모든 수는 3, 5로 소인수분해 가능함

2. N이 5의 배수인 경우(5로 나눈 나머지 == 0)

3. N이 (5의 배수 + 1) or (5의 배수 + 3)인 경우(5로 나눈 나머지 == 1 or 5로 나눈 나머지 == 3)

4. N이 (5의 배수 + 2) or (5의 배수 + 4)인 경우(5로 나눈 나머지 == 2 or 5로 나눈 나머지 == 4)


풀이

1. Scanner

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
		
        if (N == 4 || N == 7) {
            System.out.println(-1);
        } else if (N % 5 == 0) {
            System.out.println(N / 5);
        } else if (N % 5 == 1 || N % 5 == 3) {
            System.out.println((N / 5) + 1);
        } else if (N % 5 == 2 || N % 5 == 4) {
            System.out.println((N / 5) + 2);
        }
    }
}

 

2. BufferedReader

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
 
public class Main {
    public static void main(String[] args) throws IOException {
		
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
 
        if (N == 4 || N == 7) {
            System.out.println(-1);
        } else if (N % 5 == 0) {
            System.out.println(N / 5);
        } else if (N % 5 == 1 || N % 5 == 3) {
            System.out.println((N / 5) + 1);
        } else if (N % 5 == 2 || N % 5 == 4) {
            System.out.println((N / 5) + 2);
        }
    }
}

성능

  • BufferedReader > Scanner

 


출처 : https://st-lab.tistory.com/72

댓글