문제

https://school.programmers.co.kr/learn/courses/30/lessons/12941

풀이

시도 1

A, B 배열에서 배열길이만큼 A에서 제일 큰수 * B에서 제일 작은수를 돌면서 곱한건 배열에서 삭제했습니다. 효율성 테스트에서 시간초과가 났습니다. 69.6점

solution.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def solution(A, B):
    length = len(A)
    total = 0

    for i in range(length):
        Max = max(A)
        Min = min(B)
        A.remove(Max)
        B.remove(Min)
        total += Max * Min
    return total


시도 2

A는 내림차순, B는 오름차순으로 먼저 정렬후에 같은 원소 번호끼리 곱해서 더했습니다.

solution.py
1
2
3
4
5
6
7
def solution(A, B):
    total = 0
    A.sort(reverse = True) # A.reverse()
    B.sort()
    for i in range(len(A)):
        total += A[i] * B[i]
    return total


다른사람 풀이

solution.py
1
2
def getMinSum(A,B):
    return sum(a*b for a, b in zip(sorted(A), sorted(B, reverse = True)))