1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

 

✏️ 내가 작성한 코드

N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
sum = 0

A.sort()
B.sort(reverse= True) # 내림차순 정렬

for i in range(N):
    sum += A[i] * B[i]

print(sum)

 

✏️ 참고

A배열(재배열 가능)의 각 원소와 B배열(재배열 불가)의 각 원소들의 합(S)이 최솟값이기 위해서는

B배열의 원소가 클수록 A배열의 원소 중 가장 작은 값과 곱해야 한다.

따라서 B배열은 내림차순 정렬, A배열은 오름차순 정렬하여 서로 같은 인덱스끼리 곱한 다음 합치면된다.

+ Recent posts