Archive/Questions
[programmers/Swift] 최솟값 만들기
Marco
2022. 4. 28. 19:54
728x90
programmers.co.kr - 코딩테스트연습 - Lv 2 - 연습문제 - 최솟값 만들기
코딩테스트 연습 - 최솟값 만들기
길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱
programmers.co.kr
Constraints :
- 배열 A, B의 크기 : 1,000 이하의 자연수
- 배열 A, B의 원소의 크기 : 1,000 이하의 자연수
//
// Created by Yongwoo Marco on 2022/04/25.
// Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//
func solution(_ A:[Int], _ B:[Int]) -> Int {
return zip(A.sorted(by: >), B.sorted(by: <)).reduce(0) { $0 + $1.0 * $1.1 }
}
print(solution([1, 4, 2], [5, 4, 4])) // 29
print(solution([1,2], [3,4])) // 10
How I tried this :
같은 갯수의 두 배열의 각 요소를 모두 곱해서 가장 작은 수가 나오려면
작은 수 * 큰 수 형태로 각 요소를 곱하는게 가장 작기 때문에
한쪽 배열은 오름차순 한쪽 배열은 내림차순으로 정렬한 두 배열의 각 요소의 곱으로 만들어봄
다행히 효율성 테스트도 통과했다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90