문제
- 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번 누르면 된다.
- 주어진 요리시간 T초를 맞추기 위한 최소버튼 조작 방법을 구하는 문제이다.
- 요리시간 T(초)가 정수로 주어져 있으며 그 범위는 1 ≤ T ≤ 10,000이다. \
- 해당 버튼을 누르지 않는 경우에는 숫자 0을 출력해야한다.
- 만일 제시된 3개의 버튼으로 T초를 맞출 수 없으면 음수 -1을 첫 줄에 출력해야 한다.
알고리즘
- 요리시간을 입력받는다.
- 각 버튼 중에서 큰 시간 버튼 순서대로 요리시간을 나눈다.
- 여기서 나눈 몫은 버튼의 횟수가 된다.
- 나머지는 다시 요리시간에 넣어 다음 버튼으로 나눠준다.
- 위 과정을 반복한다.
- 모든 버튼을 사용하고도 T가 0이 안될 경우 -1을 출력해준다.
- T가 0일 경우에는 각 버튼의 횟수를 출력한다.
코드
T = int(input())
# 5분으로 T를 나누고 몫을 A에 넣는다.
# 나눈 나머지는 다시 T에 넣는다.
# 여기서 몫은 버튼의 횟수이다.
A = T // 300
T = T % 300
# 1분으로 T를 나누고 몫을 B에 넣는다.
# 나눈 나머지는 다시 T에 넣는다.
# 여기서 몫은 버튼의 횟수이다.
B = T // 60
T = T % 60
# 10초로 T를 나누고 몫을 C에 넣는다.
# 나눈 나머지는 다시 T에 넣는다.
# 여기서 몫은 버튼의 횟수이다.
C = T // 10
T = T % 10
# T가 0이 아니면 -1 출력
# T가 0이라면 그때의 A, B, C 3개의 버튼 횟수를 출력
if T != 0:
print(-1)
else:
print(A, B, C)
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1449번(파이썬): 수리공 항승 (0) | 2021.05.27 |
---|---|
[baekjoon] 백준 1202번(파이썬): 보석 도둑 (0) | 2021.05.26 |
[baekjoon] 백준 11047번(파이썬): 동전 0 (0) | 2021.05.23 |
[baekjoon] 백준 11399번(파이썬): ATM (0) | 2021.05.23 |
[baekjoon] 백준 13305번(파이썬): 주유소 (0) | 2021.05.23 |