알고리즘/프로그래머스

[Level2] 최솟값 만들기

야챔 2021. 4. 12. 19:35

 

programmers.co.kr/learn/courses/30/lessons/12941

 

코딩테스트 연습 - 최솟값 만들기

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱

programmers.co.kr

 

 

 

내 풀이

def solution(A,B):
    answer = 0
    A.sort()
    B.sort(reverse = True)
    for i, v in enumerate(A):
        answer += v * B[i]
    return answer

최솟값을 만드는거라

큰값*작은값 + 큰값*작은값 ....... = answer 이다.

문제를 잘... 생각해보자.

 

 

 

 

 

다른사람 풀이

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

zip 함수는 동일한 개수로 이루어진 자료형을 묶어주는 역할을 한다.

A = [1, 4, 2] 이고 B = [5, 4, 4] 이면 sorted 하여서 A = [1, 2, 4] 이고 B = [5, 4, 4] 가 되고

A와 B를 zip 함수를 사용하게되면 [(1, 5), (2, 4), (4, 4)] 가 되어 for a, b 를 통하여 sum을 해주었다.