반응형
    
    
    
  https://www.acmicpc.net/problem/10162
10162번: 전자레인지
3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은
www.acmicpc.net
- 문제
 

- 문제 풀이
 
백준 10162번 전자레인지는 브론즈 4 난이도의 수학 및 구현 문제이다. 이 문제에서 태그 된 알고리즘 분류를 보면 그리디 알고리즘도 같이 태그 되어 있지만 그리디는 아직 잘 모르므로 얘기하지 않도록 하겠다.
이 문제에서는 전자레인지에 버튼 3개가 달려있다. A, B, C 버튼이 있는데 누르면 각각 5분, 1분, 10초씩 추가된다. 그리고 문제에서는 입력으로 요리시간이 주어진다. 이 요리시간이 주어졌을 때 최소 버튼 조작의 A B C 횟수를 구해야 한다.
우선 초로 나타내면 A는 300초, B는 60초, C는 10초이다. 따라서 요리시간을 10으로 나눴을 때 나머지가 존재하면 그 시간을 정확하게 맞출 수 없으므로 -1을 출력해주면 된다.
그리고 요리시간이 300 이상이면 300을 빼주고 60 이상이면 60을 빼주고 10 이상이면 10을 빼주면서 각각의 카운트만 새면 된다.
- 코드
 
import java.io.*;
import java.util.*;
public class Main {
    static int a;
    static int b;
    static int c;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        a = 0;
        b=0;
        c=0;
        if (n % 10 != 0) {
            System.out.print(-1);
            return;
        }
        f(n);
        System.out.print(a + " " + b + " " + c);
    }
    static void f(int n) {
        if (n == 0) return;
        if (n >= 300) {
            n-= 300;
            a++;
            f(n);
        } else if (n >= 60) {
            n-=60;
            b++;
            f(n);
        } else {
            n-= 10;
            c++;
            f(n);
        }
    }
}
- 후기
 
이 문제를 통해 오랜만에 재귀 함수를 써봤다.
반응형
    
    
    
  '백준' 카테고리의 다른 글
| [백준] 2576번 : 홀수 – JAVA [자바] (2) | 2022.04.26 | 
|---|---|
| [백준] 5338번 : 마이크로소프트 로고 – JAVA [자바] (0) | 2022.04.26 | 
| [백준] 5086번 : 배수와 약수 – JAVA [자바] (0) | 2022.04.26 | 
| [백준] 1009번 : 분산처리 – JAVA [자바] (0) | 2022.04.26 | 
| [백준] 2455번 : 지능형 기차 – JAVA [자바] (0) | 2022.04.26 | 
										
									
										
									
										
									
										
									
댓글