백준 문제 링크
기타줄
- 가장 저렴한 브랜드만을 사용할 것이므로
6개 패키지의 가격인 six 변수와 1개의 가격인 one 변수를 만들어서
오름차순으로 정렬해 가장 첫번째 요소를 사용했다.- 조건은 다음과 같다.
- if N <= 6 일 때
- if six[0] <= N × one[0] : answer = six[0]
else : answer = N × one[0]- else 일 때
if ((N // 6) + 1) × six[0] <= (N // 6) × six[0] + (N % 6) × one[0]:
answer = ((N // 6) + 1) × six[0]
elif (N // 6) × six[0] + (N % 6) × one[0] <= N × one[0]:
answer = (N // 6) × six[0] + (N % 6) × one[0]
else:
answer = N × one[0]
- N <= 6일 때는 조건이 쉬운데 N > 6일 때는
1) 만약 N = 15, six[0] = 100, one[0] = 40 이라고 하자.
여기서 3 × 100 <= 2 × 100 + 3 × 40 이므로 answer = 300
2) 만약 N = 10, six[0] = 20, one[0] = 4 라고 하자.
여기서 첫번째 조건은 성립이 안되므로 elif로 넘어간다.
이제 여기서 1 × 20 + 4 × 4 <= 10 * 4 이므로 answer = 36
3) 그 외에는 모두 낱개로 사는 것이 적절하다.
N,M = map(int, input().split())
six = []
one = []
for _ in range(M):
x,y = map(int, input().split())
six.append(x)
one.append(y)
six, one = sorted(six), sorted(one)
answer = 0
if N <= 6:
if six[0] <= N * one[0]:
answer = six[0]
else:
answer = N * one[0]
else:
if ((N // 6) + 1) * six[0] <= ((N // 6) * six[0] + (N % 6) * one[0]):
answer = ((N // 6) + 1) * six[0]
elif ((N // 6) * six[0] + (N % 6) * one[0]) <= N * one[0]:
answer = ((N // 6) * six[0] + (N % 6) * one[0])
else:
answer = N * one[0]
answer