본문 바로가기
공부/algorithm

[programmers] 최솟값 만들기

by 밍미 2018. 5. 22.
최솟값 만들기

최솟값 만들기

 

 

수학적으로 생각해보자. 어떤 경우에 곱의 합이 가장 작아질까?

우선 가장 작은 수와 가장 큰 수를 곱하고, 그 다음 작은 수와 그 다음 큰 수를 곱하고, 또 그 다음 작은 수와 그 다음 큰 수를 곱해 나가는 식으로 해 전체 합계를 구하면 최솟값을 구할 수 있다.

주어진 예제로 생각해보면 순서대로 곱해서 합하는 경우 1 * 3 + 2 * 4 = 11이 되고, A에서 가장 작은 수와 B에서 가장 큰 수끼리 곱하고 A에서 가장 큰 수와 B에서 가장 작은 수를 곱해 더하면 1 * 4 + 2 * 3 = 10이 되므로 최솟값이 되며, 이 방법이 부합함을 알 수 있다.

두 수열을 각각 정렬해준 뒤, A는 오름차순으로 꺼내고 B는 내림차순으로 꺼내 곱한 값을 총합에 더해준다.

 

 

 


'공부 > algorithm' 카테고리의 다른 글

[programmers] 소수 찾기  (0) 2018.05.22
[programmers] 하샤드수  (0) 2018.05.22
[programmers] 2016년  (0) 2018.05.22
[programmers] 행렬의 곱셈  (0) 2018.05.22
[programmers] 콜라츠 추측  (0) 2018.05.22

댓글