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

백준 2839번 java 자바 설탕배달 (수학 1)

by 졸린이 2020. 10. 17.
반응형

설탕은 3kg봉지 5kg봉지 가 있는데 n(입력)kg를 배달해야 하고 가장 적은 봉지를 들고가야 하는 알고리즘이다.

뭐 간단하게 5kg로 최대한 들고 가고 남은 것을 3kg로 들고가면 된다고 생각이 된다.

뭐 나눠 떨어졌을 때 말이지만 대충 거스름돈 비슷하다고 생각하면 될 거 같다.

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) {
    //사탕은 3키로와 5키로
        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

line 8, 9 : 몇 키로를 배달할 지 n값을 입력하고 몇 봉지가 나올지 출력할 cnt를 선언한다.

line 11 : while문으로 계속 반복시키고 조건이 달성되면 break문으로 빠져나가게 한다.

line 12 : n값이 5로 나눠 떨어지면 그것이 가장 적게 들고 갈 수 있다. 예를 들어 18kg로 가정해 보자면 5로 나눠 떨어지지 않기 때문에 if문을 안들어간다.

line 16 : else if()문은 n이 4kg 처럼 3과 5로 나눠 떨어지지 않는 경우에 들어가게 된다. 이럴 경우 -1을 출력한다.

line 20 : 18kg 로 가정했을 때 if문을 안들어가서 여기로 온다. n에 3kg 를 빼고 cnt를 1올려준다. 3kg 봉지를 하나 든 셈이다.

여기서 다시 12행에 if문으로 가서 이제 15kg가 되어 5로 나눠 떨어지므로 n/5의 몫인 3에 아까 3kg봉지 +1(cnt) 를 더해서 출력해주면 된다.

 

so easy

반응형

댓글