연습장
2. 최솟값 만들기 본문
2개의 배열 A = [ ] , B = [ ] 에서 각각 1개씩 숫자를 뽑아 곱한 값들을 모두 더했을때 최소가 되는 값을 return 하는 문제
ex . 예시
A = [1,2,3,4,5]
B = [1,2,3,4,5]
꺼내는 방법은 여러개가 있지만
둘다 서로 작은걸 꺼낼 경우
1*1 + 2*2+ 3*3 + 4*4 + 5*5 == 55 가 되며
하나는 큰것 하나는 작은걸 꺼낼 경우
1*5 + 2*4 + 3*3 + 4*2 + 5*1 == 35 이 되며
무작위로 꺼낸다고 가정하면
1*4+2*5+3*2+4*1+5*3 == 39
2번째 방법이 최소값이 될것으로 예상이 된다.
입력받은 배열은 중복도 있고 정렬이 되어있지 않다는것을 고려하여 문제를 풀면 다음과 같다.
def solution(A,B):
answer = 0
# 1. 정렬
A.sort()
B.sort()
# 2. 계산
for i in range(len(A)):
answer += A[i] * B[len(A)-1-i]
return answer