12915 대회 개최

정민용·2023년 2월 12일

백준

목록 보기
49/286

문제

현종이는 프로그래밍 대회를 개최하는 것을 매우 좋아한다. 현종이는 프로그래밍 대회를 위해서 문제를 매우 많이 만들어놓았고, 이제 이 문제를 이용해서 프로그래밍 대회를 몇 번 개최할 수 있는지 알아보려고 한다.

현종이가 개최하는 프로그래밍 대회는 문제 3개로 이루어져 있고, 쉬운 문제, 중간 문제, 어려운 문제로 구성되어 있다. 대회를 개최하기 위해서는 문제 3개가 모두 있어야 한다.

현종이는 지금까지 만든 문제를 총 5가지 난이도로 분류했으며, 난이도는 다음과 같다.

  • E개의 문제는 쉬운 문제로 사용할 수 있다.
  • EM개의 문제는 쉬운 문제나 중간 문제로 사용할 수 있다.
  • M개의 문제는 중간 문제로 사용할 수 있다.
  • MH개의 문제는 중간 문제나 어려운 문제로 사용할 수 있다.
  • H개의 문제는 어려운 문제로 사용할 수 있다.
  • 모든 문제는 한 대회에서만 사용할 수 있으며, 한 가지 난이도로만 사용할 수 있다.

    현종이가 대회를 최대 몇 번 열 수 있는지 구하는 프로그램을 작성하시오.
import sys

input = lambda: sys.stdin.readline().strip()

e, em, m, mh, h = (map(int, input().split()))

count = 0
while True:
  check_easy, check_normal, check_hard = False, False, False

  if e > 0:
    e -= 1
    check_easy = True
  else:
    if em > 0:
      em -= 1
      check_easy = True

  if m > 0:
    m -= 1
    check_normal = True
  else:
    if em or mh:
      if em >= mh:
        em -= 1
        check_normal = True
      else:
        mh -= 1
        check_normal = True

  if h > 0:
    h -= 1
    check_hard = True
  else:
    if mh > 0:
      mh -= 1
      check_hard = True

  if check_easy == False or check_normal == False or check_hard == False:
    break

  count += 1

print(count)
  • 문제 유형이 이진 탐색이라고 해서 무조건 이진 탐색을 써야만 풀리는 문제는 아니다.

백준 12915 대회 개최

0개의 댓글