백준 1026번 보물 문제

 

배열의 길이 = N

정수 배열 A, B

함수 S =  A[0] * B[0] + .... + A[N - 1] * B[N - 1]...

 

즉 A와 B를 순서대로 곱해서 그 값을 누적합 해 최소의 값을 구해내라는 문제이다.

즉 A의 제일 작은 값과 B의 제일 큰 값을 계속해서 연산한다면 최소값이 나올 것 이다.

 

A의 배열을 오름차순으로, B의 배열을 내림차순으로 정렬한 후 계산해주었다.

 

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

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

for i in range(len(a)):
    result += a[i] * b[i]

print(result)

+ Recent posts