본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 2839번 자바 설탕 배달 [수학 1]

by 졸린이 2021. 1. 7.
반응형

 

상근이가 총 몇봉지를 배달하는지 구하는 문제이다. 봉지는 5kg 3kg 두 종류가 있다.

n킬로그랩을 입력했을 때 5, 3kg 두 봉지로 최대한 적은 봉지로 배달할 수 있게 하면 된다.

4kg 나 7kg 마냥 정확하게 5, 3kg 로 조합이 안되는 값은 -1을 출력한다.

그러면 바로 코드~

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
import java.util.Scanner;
 
//baekjoon_2839_설탕배달
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
    
        int n = sc.nextInt();
        int cnt=0;
        while(true) {
            if(n%5 == 0) {
                System.out.println(n/5 + cnt);
                break;
            }
            else if(n<0) {
                System.out.println(-1);
                break;
            }
            n = n-3;
            cnt++;
        }
    }
}
cs

line9 : 몇 kg인지 n값을 입력한다.

line10 : 몇 봉지일지 개수를 세는 변수 cnt를 선언.

line11 : while문으로 n kg를 최대한 적은 봉지로 표현할때 까지 반복한다.

line12 : n이 5로 나눠 떨어지는게 가장 적은 봉지로 배달할 수 있다. 

n/5로 나눠 몫에다 cnt(현재 봉지의 수, 처음들어올 때는 0이다.)를 더해서 출력하고 프로그램을 종료한다.

line16 : n이 0보다 작으면 5, 3 조합으로 표현할 수 없는 수이므로 -1을 출력하고 종료시킨다.

line20, 21 : 여기에 오면 5로 나눠떨어지지 않는 수 이므로 우선 n에서 3kg를 빼서 3kg봉지를 하나 든다는 표현으로 cnt값을 1 증가시킨다.

 

n이 5로 안나눠지더라도 3씩 계속 빼서 한 봉지씩 들고 n이 0이 되었을 때는 5로 나눠도 몫0 나머지 0으로 나눠 떨어지므로 break문이 걸려서 현재 cnt값을 출력하여 답을 도출할 수 있다.

 

뭐 나름 간단한 문제인듯.

 

 

 

 

반응형

댓글