반응형
문제
풀이
package greedy;
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));
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());//요리시간
int[] sec = {300, 60, 10};//A, B, C에 지정된 시간(초)
int[] answer = new int[3];
for(int i = 0; i < 3; i++) {
if(t >= sec[i]) {
answer[i] = t / sec[i];
t %= sec[i];
}
}
if(t != 0) {
//시간을 정확히 맞출 수 없는 경우
sb.append(-1);
}else {
for(int num : answer) {
sb.append(num).append(" ");
}
}
System.out.println(sb);
br.close();
}
}
팁
1. 버튼 A, B, C에 지정된 시간은 각각 5분, 1분, 10초를 초 단위로 변경하여 배열 sec에 저장한다.
int[] sec = {300, 60, 10};//A, B, C에 지정된 시간(초)
2. 배열 sec의 첫 번째 원소부터 시작하여 t >= sec[i]이면, 나눌 수 있는 만큼 나누고, 나머지를 t에 저장한다.
for(int i = 0; i < 3; i++) {
if(t >= sec[i]) {
answer[i] = t / sec[i];
t %= sec[i];
}
}
3. t가 0이 아니라면 제시된 3개의 버튼으로 T초를 맞출 수 없기 때문에 음수 -1을 StringBuilder에 담는다.
t가 0이라면 최소버튼 조작의 A B C 횟수를 담은 값을 StringBuilder에 담는다.
if(t != 0) {
//시간을 정확히 맞출 수 없는 경우
sb.append(-1);
}else {
for(int num : answer) {
sb.append(num).append(" ");
}
}
출처
반응형
'알고리즘 > Java' 카테고리의 다른 글
[백준] 1009.분산처리(Java8) (0) | 2021.10.11 |
---|---|
[백준] 18406.럭키 스트레이트(Java8) (0) | 2021.10.10 |
[백준] 1439.뒤집기 / 이코테.문자열 뒤집기(Java8) (0) | 2021.10.07 |
[백준] 1946.신입 사원(Java8) (0) | 2021.10.06 |
[백준] 2217.로프(Java8) (0) | 2021.10.04 |