백준 전자레인지 문제 (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);
}
}
'Study > Algorithm' 카테고리의 다른 글
백준 / 신입사원 (Java) / Greedy 알고리즘 (0) | 2020.09.01 |
---|---|
백준 / 바이러스 (Java) / DFS (0) | 2020.08.28 |
백준 / DFS 와 BFS ( Java) / 탐색 알고리즘 (0) | 2020.08.27 |
백준 / 게임을 만든 동준이 (Java) / Greedy 알고리즘 (0) | 2020.08.27 |
백준 수 묶기(Java) / Greedy 알고리즘 (0) | 2020.08.27 |