Published:
Updated:


Solution

import sys
from typing import List


# 계속 A[i] * B[i]의 최솟값을 구하는 건지 알고 시간 낭비함
# 그러면 당연히 최솟값이 0이 될 텐데.. 라면서
def solution(A: List[int], B: List[int]) -> int:
    S = 0

    # A의 수만 재배열, B는 재배열하면 안 됨
    # 오름차순으로 해주는 이유는 결국 두 배열의 곱의 최솟값은 [최소 * 최대]이기 때문
    A.sort()

    # 이제 B의 가장 큰 값부터 A 배열의 순서대로 곱해주면 되는데
    # 핵심은 "B는 재배열하면 안 된다는 거"
    # 그럼 그냥 max 구하고 그 값을 지워주면 되지 (index 굳이 구할 필요 없음)

    for a in A:
        tmp_max = max(B)
        B.remove(tmp_max)
        S += (a * tmp_max)

    return S


N = int(input())  # 무쓸모
A = list(map(int, sys.stdin.readline().split()))
B = list(map(int, sys.stdin.readline().split()))

print(solution(A, B))

Leave a comment