1026 보물
업데이트:
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를 내림차순으로 정렬한 후 반목문을 통해 곱하고 더하면 끝이다.