JB의 이모저모
[BOJ 24390🥈1] 또 전자레인지야? (Python) 본문
https://www.acmicpc.net/problem/24390
24390번: 또 전자레인지야?
첫 줄에 잇창명이 원하는 조리시간이 M:S 형태로 주어진다(0 ≤ M ≤ 60, 0 ≤ S ≤ 59). M은 분, S는 초이며, 항상 두 자리 숫자로 주어진다. 조리시간은 10초 이상 60분(3600초) 이하이며, 항상 10의 배수
www.acmicpc.net
문제
잇창명의 집에는 오래된 전자레인지가 있다. 백준 온라인 저지에서 문제를 너무 많이 푼 잇창명은 문득 이런 궁금증이 생기기 시작했다.
버튼을 최소 몇 번 눌러야 조리시간 2분을 맞출 수 있을까?
잇창명의 전자레인지에는 다음과 같이 버튼이 4개 있고, 각 버튼을 누르면 다음과 같이 작동한다. 초기 상태에는 조리시간이 0초이고, 조리 중이 아니며, 조리시작 버튼을 눌러야 조리가 시작된다.
- 10초: 조리시간이 10초 늘어난다.
- 1분: 조리시간이 1분(60초) 늘어난다.
- 10분: 조리시간이 10분(600초) 늘어난다.
- 조리시작
- 조리 중이 아닐 때: 조리가 시작된다. 만약에 조리시간이 0초였다면 30초로 늘어난다.
- 조리 중일 때: 조리시간이 30초 늘어난다.
- 모든 버튼은 조리 중인지의 여부와 무관하게 항상 누를 수 있으며, 별도의 언급이 없을 경우 항상 같은 동작을 한다.
예를 들어 이 전자레인지로 2분을 맞추려면 조리시작 버튼을 4번 누르면 되지만, 최적의 방법은 아니다. 그 대신 1분-1분-조리시작 순서로 버튼을 누르면 버튼을 누른 횟수가 3번이 되어 최적이다. 1분-1분의 경우에는 조리가 되지 않기 때문에 최적이 아니다. 실제로는 조리 중에는 남은 조리시간이 계속 줄어들고 중간에 조리를 취소할 수 있지만, 이 문제에서는 생각하지 않기로 한다.
잇창명은 지난 한 학기 동안 전자레인지를 이용할 때마다 매번 문제로 내고 싶은 마음이 들어서 괴로워하고 있다. 잇창명을 도와주자!
입력
첫 줄에 잇창명이 원하는 조리시간이 M:S 형태로 주어진다(0 ≤ M ≤ 60, 0 ≤ S ≤ 59). M은 분, S는 초이며, 항상 두 자리 숫자로 주어진다.
조리시간은 10초 이상 60분(3600초) 이하이며, 항상 10의 배수이다.
출력
주어진 조리시간을 맞추기 위해 버튼을 눌러야 하는 최소 횟수를 출력한다.
예제 입력 1
02:00
예제 출력 1
3
⭕ CODE
m,s = map(int,input().split(':'))
count = 0
# 10분 단위로 나눈거 더해주기
count += m // 10
# 1분 단위로 나눈거 더해주기
count += m % 10
# 초가 30초 이상이면
if s >= 30:
# 처음에 조리시작 누름 -> 30초가 줄어든다
count += 1
# s초에서 30초를 뺀거의 몫을 10초 단위로 나눈거
count += (s-30) // 10
# 초가 30초 이하면
# 조리시간 먼저 늘이고 시작 누름
elif s < 30:
# 조리 시간 늘이고 시작버튼 누르기
count += 1
# 10초 단위로 나눈거 더해주기
count += s//10
print(count)
✏️ Comment
10분, 1분, 10초 단위로 나누어서 생각했고 무조건 조리시작 버튼을 눌러야하기에 초가 30초 이상이면 시작부터 조리시작 버튼을 눌러 30초를 줄어들게 하였고 초가 30초 이하면 조리 시간을 늘여두고 시작버튼을 눌렀다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ 18809 🥇1] Gaaaaaaaaaarden (Python) (1) | 2023.09.25 |
---|---|
[BOJ 13904 🥇3] 과제 (Python) (0) | 2023.09.23 |
[BOJ 1781🥇2] 컵라면 (Python) (0) | 2023.09.22 |
[BOJ 12865🥇5] 평범한 배낭 (Python) (0) | 2023.09.21 |
[BOJ 1082🥇3] 방 번호 (Python) (0) | 2023.09.21 |