[백준/파이썬] 1026번 보물 풀이

업데이트:



문제 정보


풀이

문제

두 배열 A, B가 주어질 때 A는 재배열할 수 있고 B는 재배열할 수 없습니다.

S = Σ(A[i] * B[i])의 값을 최소로 만드는 값을 구하는 문제입니다.

코드

n = int(input())

a = list(map(int, input().split()))
b = list(map(int, input().split()))

a.sort()
b.sort(reverse = True)

c = [a[i]*b[i] for i in range(n)]

print(sum(c))

설명

곱의 합을 최소화하려면 작은 수와 큰 수를 서로 곱하도록 짝지으면 됩니다.

그래서 A는 오름차순, B는 내림차순으로 정렬해 같은 인덱스끼리 곱한 뒤 합을 구하면 됩니다.



댓글남기기