반응형

뭐지.....

오늘 2단계 문제를 3개째 풀고 있는데 지금까지 계속 쉬웠다..

이 문제도 쉬운 문제다🤔🤔

10분도 안걸렸다 

 

어제 푼게 유난히 어려운 문제였던걸까

2단계 말고 3단계도 풀어봐야겠다.

 


 

 

문제

 


문제 설명

길이가 같은 배열 A, B 두 개
각 배열은 자연수로 이루어져 있다.
배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한다.
=> 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적 합한다.
최종적인 누적합이 최소가 되도록 만드는 것이 목표
각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.

배열 A, B가 주어질 때 최종적으로 누적된 최솟값을 return 하는 함수를 작성해라

 

 

 


코드

# 길이가 같은 배열 A, B 두 개
# 각 배열은 자연수로 이루어져 있다.
# 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한다.
# => 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적 합한다.
# 최종적인 누적합이 최소가 되도록 만드는 것이 목표
# 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.

# 배열 A, B가 주어질 때 최종적으로 누적된 최솟값을 return 하는 함수를 작성해라


# A배열의 작은 값과 B배열의 큰 값 (혹은 그 반대)를 곱해서 계산하는게 제일 유리할 것 같다.


def solution(A,B):
    answer = 0
    print(A)

    A = sorted(A)
    B = sorted(B)[::-1]

    # 반복 횟수 = 배열의 길이
    n = len(A)
    sum = 0
    for i in range(n):
        sum += A[i] * B[i]

    answer = sum
    return answer

 


A배열의 작은 값과 B배열의 큰 값 (혹은 그 반대)를 곱해서 계산하는게 제일 유리할 것 같다는 생각을 하고서 

그렇게 코드를 짜봤더니 쉽게 통과했다!😊

 

 

반응형
복사했습니다!