문제
- 길이가 같은 배열 두 개가 주어짐
- 각각의 배열에서 하나씩 숫자를 뽑아 두 수를 곱함
- 이 과정을 배열의 길이만큼 반복하며 곱한 값을 누적하여 더할 때
- 최종 누적 값이 최소가 되도록 만들어야 함
-
- 이 때, 각각의 숫자는 한 번씩만 뽑을 수 있음
-
- 배열의 크기는 1000 이하 자연수
- 원소의 크기는 1000 이하 자연수
Idea
- 한 배열은 가장 작은 값부터, 다른 배열은 가장 큰 값부터 각각 곱해서 더하면 가장 작은 값이 나올 것 같음
-
- 하나는 오름차순, 다른 하나는 내림차순으로 정렬해서
- 반복문 사용해서 곱하여 누적하기
Code
Swift
- 뭐지,, 처음에 효율성에서 두 개 시간초과 나길래 잉?? 아닌가 하고 찾아봤는데 다 나랑 똑같음
- 그래서 다시 돌렸더니 통과됨!
import Foundation
func solution(_ A:[Int], _ B:[Int]) -> Int
{
var answer = 0
let a = A.sorted()
let b = B.sorted(by: >)
for i in 0..<a.count {
answer += a[i] * b[i]
}
return answer
}