Study/Algorithm

백준 / 전자레인지 문제 (java) / Greedy 알고리즘

개발개발개발 2020. 8. 26. 16:25

백준 전자레인지 문제 (JAVA) / Greedy 알고리즘

문제 : 요리해야 할 시간 T초를 A, B, C 3개의 버튼을 눌러 그 합이 정확히 T초가 되도록 한다.


조건 1 : 임의의 시간(T초)을 5분, 1분, 10초 단위로 정확히 맞춘다.

조건 2 : 최소한의 버튼을 사용한다.

조건 3 : 정확한 시간을 맞출 수 없을 때, -1을 출력한다. 

 

해결 방법 :

가장 큰 단위부터 T초를 나누며 시간을 계산한다. 

 

나 같은 경우는 시간 단위를 배열에 넣어 큰 단위부터 임의의 시간(T초)을 나눈 뒤 바로 문자에 넣었다.

 

그리고 마지막 단위를 계산할 경우 뒤에 띄어쓰기가 함께 들어가기 때문에 trim 함수로 앞 뒤 공백 제거 후 출력.


 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();

		int[] time = {10, 60, 300};
		String answer = "";
		for(int i=time.length -1; i>=0; i--) {
			answer += t/time[i]+" ";
			t = t%time[i];
		}
		
		answer = answer.trim();
		if(t !=0) System.out.println(-1);
		
		else System.out.println(answer);
	}

}