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
'알고리즘 > 백준' 카테고리의 다른 글
[Java] 백준 25496 장신구 명장 임스 - 실버5 (0) | 2023.07.11 |
---|---|
[Java] bfs 실버모음4 (2) | 2023.02.22 |
[Java] bfs 실버모음3 (0) | 2023.02.11 |
[Java] bfs 실버모음2 (0) | 2023.02.10 |
[Java] bfs 실버 모음1 (0) | 2023.02.09 |