1. 고객이 원하는 대형 스크린을 만들기 위해서는 4가지 조건 중 최적을 선택해야한다.
(가로 해상도(pixel) / 세로 크기(mm))
(가로 크기(mm) / 세로 해상도(pixel))
(가로 크기(mm) / 세로 크기(mm))
(가로 해상도(pixel) / 세로 해상도(pixel))
2. 모니터를 정방향으로, 90도 회전시켜 최소 모니터수를 구해 금액을 최소화한다.
- 제목
대형 스크린
- 조건
시간 제한 : 1 초
메모리 제한 : 128 MB
- 문제
상근이는 모니터를 여러개 붙여서 대형 모니터를 만드는 일을 하고 있다.
고객은 대형 모니터의 가로, 세로 해상도(픽셀)과 가로 세로 크기(밀리미터)를 상근이에게 주문한다. 상근이는 고객의 주문 값보다 크거나 같은 해상도, 크거나 같은 크기의 대형 모니터를 만들어야 한다. 이때, 제조비가 최소가 되어야 한다.
대형 모니터는 항상 같은 종류의 모니터로 만들어야 한다. 대형 모니터의 해상도, 크기는 모니터를 붙인 형태로 각각을 더하면 되고, 가격은 사용한 모니터의 가격의 합이다.
상근이의 창고에는 모니터가 여러 종류가 있고, 각각의 해상도와 크기, 가격은 모두 알고 있다. 모니터를 회전 시켜서 대형 모니터를 만들 수 있다. 하지만, 대형 모니터에 포함된 모니터는 모두 같은 방향이어야 한다. 상근이는 모니터를 매우 많이 가지고 있어, 필요한 만큼 사용할 수 있다.
- 입력
첫째 줄에 대형 모니터의 가로 세로 해상도, 가로 세로 크기 rh, rv, sh, sv가 주어진다. 각 값은 100보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
다음 줄에는 상근이가 가지고 있는 모니터 종류의 개수 n이 주어진다. (1 ≤ n ≤ 100)
다음 n개 줄에는 각 모니터의 가로 세로 해상도, 가로 세로 크기, 가격 rh,i, rv,i, sh,i, sv,i, pi 가 주어진다. 이 값도 모두 100보다 크거나 같고, 10,000보다 작거나 같다.
- 출력
첫째 줄에 대형 모니터를 만드는 가격 중 가장 저렴한 가격을 출력한다.
예제 입력1 | 예제 출력1 |
1024 1024 300 300 3 1024 768 295 270 200 1280 1024 365 301 250 1280 800 350 270 210 |
250 |
import math
rh, rv, sh, sv = map(int, input().split())
sz = int(input())
min_price = 1000000000
for i in range(sz):
rhi, rvi, shi, svi, pi = map(int, input().split())
horizontal = max(math.ceil(rh / rhi), math.ceil(sh / shi))
vertical = max(math.ceil(rv / rvi), math.ceil(sv / svi))
min_price = min(min_price, horizontal * vertical * pi)
horizontal = max(math.ceil(rh / rvi), math.ceil(sh / svi))
vertical = max(math.ceil(rv / rhi), math.ceil(sv / shi))
min_price = min(min_price, horizontal * vertical * pi)
print(min_price)
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 1253 - 좋다 (0) | 2023.07.19 |
---|---|
[BOJ/백준] 9656 - 돌 게임 2 (0) | 2023.07.19 |
[BOJ/백준] 22352 - 항체 인식 (0) | 2022.09.22 |
[BOJ/백준] 25192 - 인사성 밝은 곰곰이 (0) | 2022.09.20 |
[BOJ/백준] 25584 - 근무 지옥에 빠진 푸앙이 (Large) (0) | 2022.09.19 |