알고리즘/백준
백준 1026 보물, 1049 기타줄 파이썬 python
fladi
2023. 2. 15. 21:16
728x90
[1026] 보물
import sys
input = sys.stdin.readline
input()
A = list(map(int, input().strip().split()))
B = list(map(int, input().strip().split()))
A.sort()
B.sort(reverse=True)
print(sum([a*b for a,b in zip(A,B)]))
- (A의 가장 큰 값) * (B의 가장 작은 값) + (A의 두 번째로 큰 값) * (B의 두 번째로 작은 값) + ...
을 반복하면 곱의 최소를 구할 수 있다. - 최솟값만 출력하면 되니까 B를 내림차순으로 정렬해도 상관없다.
- A를 오름차순으로 정렬, B를 내림차순으로 정렬
- A와 B를 인덱스에 맞게 곱해준 리스트를 만들고, 그 리스트의 합을 구함.
[1049] 기타줄
import sys
input = sys.stdin.readline
N, M = map(int, input().strip().split())
packageP = []
singleP = []
for _ in range(M):
a, b = map(int, input().strip().split())
packageP.append(a)
packageP.append(b * 6)
singleP.append(b)
packageP.sort()
singleP.sort()
print(packageP[0]*(N//6) + min(singleP[0]*(N%6), packageP[0]))728x90