본문 바로가기
Algorithm Problem Solving/BaekJoon

[BOJ/BaekJoon] 백준 10162 전자레인지 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2022. 6. 6.
728x90
반응형

BaekJoon BOJ 백준 10162 전자레인지 문제는 전자레인지에 달린 3개의 버튼을 적절히 눌러서 그 시간의 합이 정확히 T초가 되도록 최소 버튼 조작을 구하는 문제이다.

 

BaekJoon 10162 전자레인지 문제 정보

출처

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

알고리즘 분류

- 그리디 알고리즘 (greedy algorithm, 탐욕법)

난이도

- 브론즈 3 / Bronze 3

 

전자레인지 문제 요약

  • 전자레인지에 달린 버튼 A, B, C에 지정된 시간은 각각 5분, 1분, 10초이다.
  • 해당 버튼을 한번 누를 때마다 그 시간이 동작 시간에 더해진다.
  • A, B, C 3개의 버튼을 적절히 눌러서 그 시간의 합이 정확히 T초가 되도록 해야 한다.
  • 3개의 버튼으로 시간을 정확히 맞출 수 없는 경우도 있다.
  • A, B, C를 누른 횟수의 합은 항상 최소가 되어야 한다. 이것을 최소 버튼 조작이라고 한다.
  • 첫째 줄에 요리시간 T(초)가 정수로 주어져 있으며 그 범위는 1 ≤ T ≤ 10,000이다.
  • 주어진 요리시간 T초를 맞추기 위한 최소 버튼 조작의 A B C 횟수를 사이에는 빈칸을 두어 차례대로 출력한다.
  • 해당 버튼을 누르지 않는 경우에는 숫자 0을 출력해야 한다.
  • 만일 제시된 3개의 버튼으로 T초를 맞출 수 없으면 음수 -1을 첫 줄에 출력해야 한다. 

문제 풀이 과정

최소 버튼 조작을 하려면 동작 시간이 긴 버튼부터 최대한 많이 누르면 된다.
그리디 알고리즘이 정당한 이유는 동작 시간이 짧은 버튼들이 긴 버튼들의 배수이기 때문이다.

 

  1. 동전의 종류 수 N, 만들 가치의 합 K, 동전의 가치 A를 입력받는다.
  2. 각 버튼의 동작 시간이 초단위로 되어있는 리스트를 정의한다.
  3. 요리시간이 10초의 배수가 아니라면  3개의 버튼으로 초를 맞출 수 없으므로 -1을 출력한다.
  4. 10초의 배수면 동작 시간이 긴 버튼부터 최대한 많이 누르고
  5. 남은 시간을 요리시간에 덮어 씌운다.
  6. 모든 버튼을 다 누를 때까지 반복한다.
  7. 조건에 맞게 출력한다.

 

코드 및 설명
  • T - 요리시간
  • button - 각 버튼의 동작 시간이 초단위로 되어있는 리스트
  • cnt - 버튼을 누른 횟수를 저장한 리스트 (A, B, C 순서)
T = int(input())

button = [300, 60, 10]

if T % 10 != 0:
    print(-1)
else:
    # 방법 1
    cnt = []
    for b in button:
        cnt.append(T // b)
        T %= b
    print(*cnt)
    
    # 방법 2
    # for b in button:
    #     print(T // b, end=' ')
    #     T %= b

비슷한 문제 풀어보기 >>

[그리디/Greedy] 이코테 거스름 돈 문제 (Python / 파이썬)

 

[그리디/Greedy] 이코테 거스름 돈 문제 (Python / 파이썬)

이것이 취업을 위한 코딩 테스트다 with 파이썬 (나동빈 저) 3장 그리디(greedy, 탐욕법) 거스름 돈 문제는 거슬러 주어야 할 돈이 주어졌을 때 거슬러 주어야 할 동전의 최소 개수를 구하는 문제이

wondytyahng.tistory.com

[BOJ/BaekJoon] 백준 11047 동전 0 (Python / 파이썬)

 

[BOJ/BaekJoon] 백준 11047 동전 0 (Python / 파이썬)

BaekJoon BOJ 백준 11047 동전 0 문제는 여러 종류의 동전을 적절히 사용해서 그 가치의 합을 만들려고 할 때 필요한 동전 개수의 최솟값을 구하는 문제이다. BaekJoon 11047 동전 0 문제 정보 출처 - https

wondytyahng.tistory.com

 

BaekJoon 백준 BOJ 10162 전자레인지 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 3이다.

728x90
반응형

댓글