https://www.acmicpc.net/problem/1026
A의 최솟값 * B의 최댓값을 계속 더하면 되겠구나.. 생각해서
A를 오름차순 정렬, B를 내림차순 정렬해서 곱했다
B를 재배열하지 말라길래 ㅇㅇB는 안건드릴게 하고 새로운 배열에다 B 재배열한 걸 넣어줬는데 이렇게 풀라는게 맞는지는 모르겠지만 맞긴맞았다
# 1026 보물
import sys
n = int(input())
A = list(map(int, sys.stdin.readline().split()))
B = list(map(int, sys.stdin.readline().split()))
A.sort()
sorted_B = sorted(B, reverse=True)
result = 0
for i in range(n):
result += A[i] * sorted_B[i]
print(result)
진짜로 B를 재배열하지 않고 풀 수 있는 방법이 뭐가있을까 생각하다가 찾아보니 최솟값, 최댓값을 찾아 pop을 하는 방법이 있었다
# 1026 보물
import sys
n = int(input())
A = list(map(int, sys.stdin.readline().split()))
B = list(map(int, sys.stdin.readline().split()))
A.sort()
result = 0
for i in range(n):
result += A[i] * B.pop(B.index(max(B)))
print(result)
시간과 메모리의 차이는 없었다