백준 알고리즘/기본수학1

[JAVA 자바] 백준 2839번 : 설탕 배달

Sun720 2022. 6. 13. 13:00

▶ 문제

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

 

2839번: 설탕 배달

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

www.acmicpc.net

 설명

이 문제에서 설탕의 무게를 게임에서의 에너지 게이지라고 생각하면서 풀었다.

총 설탕의 무게를 총 에너지라고 보고, 5로 나누어 떨어지지 않을 때마다 3씩 마이너스 하는 것을 에너지 3을 줄이는 것처럼 생각한 것이다.

 

이 문제를 푼 순서는 다음과 같다.

1. 총 설탕 무게에서 5로 나눈다.

2-1. 5로 나누어 떨어진다면 나눈 값이 정답이 된다. (바로 정답 출력!)

2-2. 5로 나누어 떨어지지 않는다면 3kg를 마이너스 한다.

3. 마이너스해서 남은 설탕의 무게를 5로 나누어 떨어질 때까지 3kg를 마이너스 한다. (1과 2단계를 반복한다.) 

   남은 설탕 무게가 5kg 미만일 때까지 3kg를 마이너스 한다.  

4. 안타깝게도 5kg 미만이 될 때까지도 5로 나누어 떨어지지 않았다면 마지막으로 3으로 나누어 본다.

5-1. 3으로 나누어 떨어지면 바로 정답을 출력할 수 있다.

5-2. 3으로 나누어 떨어지지 않는다면 그 총 설탕의 무게는 3과 5로 나눌 수 없으므로 -1을 출력해야만 한다.

 

2-2에서 5로 나누어 떨어질 때까지 3을 마이너스 했는데 마이너스 할 때마다 개수를 세서 봉지의 개수로 반영하도록 하였다.

 

 

문제 풀이

🌱 풀이.

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

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());
        
		int count = 0;
		while (n > 2) {		
			if (n % 5 != 0) { // 5배수가 아니라면
				n -= 3;
				count++;
                
				if(n < 5 && n%3!=0) {
					count = -1;
					n=count;
				}
			} else {// 5배수라면							
				count += n / 5;
				n=0;				
			}
		}
		System.out.println(count);
	}
}

 

 

Log

728x90
반응형