티스토리 뷰
1049번: 기타줄
첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주
www.acmicpc.net
1. 문제 내용
2. 접근 방식
- 각 패키지 가격과 낱개 가격의 최소값만 신경 쓰면 된다.
최소값을 구해야 하므로, 패키지의 가격의 최소값과 낱개 가격의 최소값만 필요하다.
- 값을 구하는 방법은 총 3가지
n = 10이고, 패키지 가격의 최소값 p = 20, 낱개 가격의 최소값 q = 4이라고 가정하자. 그럼 총 값을 구하는 방법은 다음과 같다.
- 패키지 6개로 최대한 구매한 후, 나머지를 낱개로 구매하는 경우
- n // 6 * p + n % 6 * q = 10 // 6 * 20 + 10 % 6 * 4 = 1 * 20 + 4 * 4 = 36
- 필요한 기타줄 개수를 초과하더라도, 패키지로만 구매하는 경우
- (n // 6 + 1) * p = (10 // 6 + 1) * 20 = 2 * 20 = 40
- 모든 기타줄을 낱개로 구매하는 경우
- n * q = 10 * 4 = 40
위 세 가지로 구한 값 중에서 매번 최소값을 선택하면 된다.
3. 정답 코드
n, m = map(int, input().split())
package = []
unit = []
for _ in range(m):
x, y = map(int, input().split())
package.append(x)
unit.append(y)
p = min(package)
q = min(unit)
result = min(n//6 * p + n%6 * q, (n//6 + 1) * p, n * q)
print(result)
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] 1758번 알바생 강호 파이썬 정답 코드 (0) | 2023.06.05 |
---|---|
[백준] 11508번 2 + 1 세일 파이썬 정답 코드 (0) | 2023.06.05 |
[백준] 1969번 DNA 파이썬 정답 코드 (0) | 2023.06.04 |
[백준] 2847번 게임을 만든 동준이 파이썬 정답 코드 (0) | 2023.06.04 |
[백준] 1026번 보물 파이썬 정답 코드 (0) | 2023.06.03 |