문제
문제 이해
- 끊어진 기타 줄을 새로 구매
- 끊어진 기타 줄 개수 N, 기타 줄 브랜드 M
- 기타 줄 6개 패키지 가격과 낱개(1)로 살 때의 가격이 주어짐
- 적어도 N개의 기타 줄을 사기 위한 최소 가격은?
풀이
최소 가격을 구하는 것이므로 6개의 최소 가격과 1개의 최소 가격 이외에는 필요가 없음
기타 줄 6개의 최소 가격과 기타 줄 1개의 최소 가격을 구해 N개를 구매하기 위한 가격 도출
- 기타 줄 6개의 최솟값과 1개의 최솟값을 각각 구함
- 6개 <= 1개 * 6이면, 1개로 N개를 모두 구매
- 6개 > 1개 * 6이면, 6개를 (N // 6) 개만큼 구매
- (N % 6) 개의 가격이 싼 걸로 구매, 1개 * (N % 6) vs 6개
코드
- 기타 줄의 최대 가격이 1000이므로 최솟값을 1001로 설정
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
string_6_min = 1001
string_1_min = 1001
for i in range(m):
string_6, string_1 = map(int, input().split())
if string_6 < string_6_min:
string_6_min = string_6
if string_1 < string_1_min:
string_1_min = string_1
if string_6_min >= string_1_min * 6:
print(n * string_1_min)
else:
if string_6_min >= string_1_min * (n % 6):
print((n // 6) * string_6_min + string_1_min * (n % 6))
else:
print((n // 6 + 1) * string_6_min)
'알고리즘 연습 > 백준' 카테고리의 다른 글
[Python - 1012] 유기농 배추 (S2) (0) | 2024.06.19 |
---|---|
[Python - 1051] 숫자 정사각형 (S3) (0) | 2024.06.17 |
[Python - 1026] 보물 (S4) (0) | 2024.06.13 |
[Python - 17299] 오등큰수 (G3) (0) | 2024.05.24 |
[Python - 24511] queuestack (S3) (0) | 2024.05.21 |