728x90
프로그래머스 최솟값 만들기
주어진 배열 A, B의 값을 1:1로 곱하여 나올 수 있는 수 중 가장 작은 수를 구하는 문제
이론상 가장 작은 수가 되려면 (작은 수 * 큰 수) + (작은 수 * 큰 수) + … = 가장 작은 수로 생각해서 A와 B를 오름차순, 내림차순으로 정렬해서 순회
func solution(_ A:[Int], _ B:[Int]) -> Int {
let a = A.sorted(by: <)
let b = B.sorted(by: >)
return a.enumerated().reduce(0) { partialResult, element in
partialResult + element.element * b[element.offset]
}
}
// A B answer
// [1, 4, 2] [5, 4, 4] 29
// [1,2] [3,4] 10
728x90
'Algorithm' 카테고리의 다른 글
SwiftUI: 이진 변환 반복하기 (0) | 2024.03.13 |
---|---|
SwiftUI: 올바른 괄호 (0) | 2024.03.12 |
SwiftUI: JadenCase 문자열 만들기 (0) | 2024.03.09 |
SwiftUI: 최댓값과 최솟값 (0) | 2024.03.08 |
SwiftUI: 로또의 최고 순위와 최저 순위 (0) | 2024.03.07 |