[프로그래머스]/python

[프로그래머스] Lv2. 최솟값 만들기

0_TLS 2024. 3. 7. 13:57

문제 보기

더보기

 

<나의 풀이> - 실패

from itertools import permutations
def solution(A,B):
    num = 0
    nums = []
    tmp_A = list(permutations(A, len(A)))
    tmp_B = list(permutations(B, len(B)))
    print('tmp_A:', tmp_A)
    print('tmp_B:', tmp_B)
    for i in range(len(tmp_A)):
        for j in range(len(A)):
            num += tmp_A[i][j] * tmp_B[i][j]
        nums.append(num)
        num = 0
    return min(nums)

=> A와 B의 원소들의 모든 조합이 나오지 않음.

 

=> 문제에서 요구하는대로 풀려면 한 리스트의 원소 중 가장 큰 값과 다른 리스트의 원소 중 가장 작은 값이 곱해지면 됨.

=> 리스트 하나는 오름차순으로, 하나는 내림차순으로 정렬해서 풀면 된다.

 

<정답 코드>

def solution(A,B):
    num = 0
    A.sort()
    B.sort(reverse=True)
    for i in range(len(A)):
        num += A[i] * B[i]
    return num