어차피 A와 B의 숫자를 하나씩 짝 짓는 문제이기 때문에 B의 순서를 변경할 수 없다고 해서 B를 그대로 두고 문제를 풀 필요는 없습니다.
S를 가장 작게 만들기 위해서는 A의 가장 큰 숫자를 B의 가장 작은 숫자와 짝지어서 곱하면 됩니다. 따라서 A를 오름차순으로 B를 내림차순으로 정렬해서 S를 구합시다.
let N = Int(readLine()!)!
// 오름차순 정렬
let A = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted(by: <)
// 내림차순 정렬
let B = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted(by: >)
// S 구해서 출력하기
var S = 0
for i in 0..<N {
S += A[i] * B[i]
}
print(S)