본문 바로가기
코딩 테스트

2839번 설탕배달(자바, java) - 그리디

by 주용사 2023. 1. 9.
728x90
import java.io.*;
import java.util.*;

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 answer = 0;
		int temp = 0;
		int a = 0;
		int b = 0;
		
		/* 참고용
		System.out.println(500%5); // 0 <- 나머지
		System.out.println(500/5); // 100 <- 몫
		*/

		// n = 5a + 3b
		// answer min(a+b) or -1
		
		/* 해결방법													*/
		/* 최소한으로 가져갈려면 일단 제일 큰수인 5로 나눠봐야한다. 					*/
		/* 5보다 작은 4는 예외처리											*/
		/* n = 5a + 3b												*/
		/* temp를 3으로 나누어 떨어지지 않으면 표현불가기에 5의 개수(a)를 줄여가면서 체크한다 */
		/* a의 값이 0보다 작아질 수 없어서 break								*/
		/* 마지막까지 3으로 나누어떨어지지 않으면 표현할 수 없는 숫자이기에 -1처리		*/
		if(n == 4)
			answer = -1;
		else
		{
			a = n / 5;
			temp = n % 5;
			while ((temp % 3) != 0) {
				a -= 1;
				temp += 5;
				
				if(a == 0)
					break;
			} 
			b = temp / 3;
			
			if((temp % 3) != 0)
				answer = -1;
			else
				answer = a + b;
		}

		//System.out.println(n + "= 5 * " + a + " + 3 * " + b); 
		System.out.println(answer); 
		
		br.close();
		
	}
}

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

728x90