백준(Baekjoon Online Judge) - 10162번(전자레인지) 문제 풀이
Series: 알고리즘 문제풀이
알고리즘 문제풀이contains 12
- 1.Kakao, 2021 카카오 블라인드 코딩 테스트, 신규 아이디 추천
- 2.백준(Baekjoon Online Judge) - 2839번(설탕 배달) 문제 풀이
- 3.백준(Baekjoon Online Judge) - 11399번(ATM) 문제 풀이
- 4.백준(Baekjoon Online Judge) - 11047번(동전 0) 문제 풀이
- 5.백준(Baekjoon Online Judge) - 1931번(회의실 배정) 문제 풀이
- 6.백준(Baekjoon Online Judge) - 5585번(거스름돈) 문제 풀이
- 7.백준(Baekjoon Online Judge) - 1541번(잃어버린 괄호) 문제 풀이
- 8.백준(Baekjoon Online Judge) - 2217번(로프) 문제 풀이
- 9.백준(Baekjoon Online Judge) - 1946번(신입 사원) 문제 풀이
- 10.백준(Baekjoon Online Judge) - 10162번(전자레인지) 문제 풀이
- 11.백준(Baekjoon Online Judge) - 1339번(단어 수학) 문제 풀이
- 12.백준(Baekjoon Online Judge) - 4796번(캠핑) 문제 풀이
- 더보기
1. 문제
2. 입출력 예시
| 입력 예시 | 출력 예시 |
|---|---|
| 100 | 0 1 4 |
| 189 | -1 |
3. 문제 풀이
이 문제의 유형은 거스름돈과 동일했으며 딕셔너리를 사용하여 간단히 해결할 수 있었다. 문제를 해결하기 위한 순서는 아래와 같다.
- 딕셔너리(
btn)의 각각key를 버튼으로 하고value를 0으로 초기화한다. 이때 각각 버튼은 모두 초 단위로 바꾸어주며, 초 단위가 큰 순으로key에 저장한다. - 냉동식품의 요리시간(
T)를 입력받는다. - 딕셔너리의
key를 기준으로 반복하며 해당key의value를 요리시간에 버튼의 초로 나눈 몫으로 변경하되 정수형이 아닌 문자열(str)로 변환한다. 이후 요리시간은 요리시간을 버튼의 초로 나눈 나머지로 초기화한다. - 반복이 종료된 후 요리시간의 값을 확인한다. 만약에 요리시간이 0이 아닐 경우
-1을 출력하고, 그 외에는 딕셔너리의value들 사이에 공백을 두어 문자열로 출력한다.
이를 코드로 나타내면 아래와 같다.
import sys
btn = {
300: 0,
60: 0,
10: 0
}
T = int(sys.stdin.readline())
for b in btn.keys():
btn[b] = str(T//b)
T %= btn
if T:
print(-1)
else:
print(" ".join(list(btn.values())))이 코드의 메모리는 28,776 KB, 시간은 72 ms 가 소요되었다. 이와 같은 문제의 유형은 이제 제대로 파악한 것으로 생각된다. 문제에서 제시한 동작의 최솟값을 구하는 경우 가장 큰 순으로 주어진 값을 나누고, 그 몫을 결과에 더하고, 주어진 값은 나머지로 초기화하는 것이 핵심이다.