CodingTest/Baekjoon

[baekjoon] 백준 10162번(파이썬): 전자레인지

JunJangE 2021. 5. 23. 16:31

문제

 

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번 누르면 된다.

- 주어진 요리시간 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

 

junjange/CodingTest

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com