업데이트:

카테고리: ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.

import sys
read = sys.stdin.readline

N = int(read())
A = list(map(int,read().split()))
B = list(map(int,read().split()))

# A는 오름차순
A.sort()
# B는 내림차순
B.sort(reverse=True)

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

print(summation)




3. 문제 풀이

이 문제의 핵심은 B도 재배열하는 것이다. 하지말랬다고 안하면 문제를 못푼다! A와 B의 요소별 곱의 합을 최소화 하는 문제인데, 그럴려면 B의 큰 값들을 A의 작은 값들과 곱해야한다. 따라서 A를 오름차순으로 정렬하고, B를 내림차순으로 정렬한 후 반목문을 통해 곱하고 더하면 끝이다.

최대 1 분 소요