본문 바로가기
algorithm

[백준(BOJ)] 10162번 : 전자레인지 - Python(파이썬) - (브론즈4, 그리디 알고리즘)

by 개발자 쿠키 2022. 7. 16.

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

 

10162번: 전자레인지

3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은

www.acmicpc.net

문제

3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 각각 5분, 1분, 10초이다.

냉동음식마다 전자레인지로 요리해야할 시간 T가 초단위로 표시되어 있다. 우리는 A, B, C 3개의 버튼을 적절히 눌러서 그 시간의 합이 정확히 T초가 되도록 해야 한다. 단 버튼 A, B, C를 누른 횟수의 합은 항상 최소가 되어야 한다. 이것을 최소버튼 조작이라고 한다. 

만일 요리시간이 100초라고 하면(T=100) B를 1번, C는 4번 누르면 된다. 이와 다르게 C를 10번 눌러도 100초가 되지만 이 경우 10번은 최소 횟수가 아니기 때문이 답이 될 수 없다. 이 경우 B 1번, C 4번, 총 5번이 최소버튼 조작이다. 그리고 T=234와 같이 3개의 버튼으로 시간을 정확히 맞출 수 없는 경우도 있다. 

여러분은 주어진 요리시간 T초를 맞추기 위한 최소버튼 조작 방법을 구하는 프로그램을 작성해야 한다. 

입력

첫 번째 줄에는 요리시간 T(초)가 정수로 주어져 있으며 그 범위는 1 ≤ T ≤ 10,000 이다. 

출력

여러분은 T초를 위한 최소버튼 조작의 A B C 횟수를 첫 줄에 차례대로 출력해야 한다. 각각의 횟수 사이에는 빈 칸을 둔다. 해당 버튼을 누르지 않는 경우에는 숫자 0을 출력해야한다. 만일 제시된 3개의 버튼으로 T초를 맞출 수 없으면 음수 -1을 첫 줄에 출력해야 한다. 

서브태스크

번호배점제한
1 30 T ≤ 60
2 30 T ≤ 300
3 40 T ≤ 10,000

예제 입력 1 복사

100

예제 출력 1 복사

0 1 4

예제 입력 2 복사

189

예제 출력 2 복사

-1

코드

 

문제접근

 

- // 몫만 출력

- % 나머지만 출력

- !0 0이 아닐때만

 

문제풀이

 

(1) T로 정수를 입력받고, x에는 300으로 나눈 몫만 출력한다.

(2) x1에는 300과 60으로 나눈 몫의 나머지에 60을 나눈다.

(3) x2에는 T에서 300을 나눈 나머지에 60을 나눈 나머지를 출력한다.

(4) x3에는 x2의 값에서 10을 나눈 나머지를 출력한다.

(5) x4에는 x2값에서 10을 나눈 몫을 출력한다. 

(6) 나머지가0이면 x,x1,x4를 출력하고 나머지가 0이 아니면 -1을 출력한다.