처음에 시도하려고 했던 것은 모든 경우의 수를 만들고 그 다음에 비교하여 최솟값을 찾으려고 했습니다.
하지만 이렇게 되면 이중 for문을 사용해야했으며,
비효율적이라는 생각이 들었습니다.
이에 고민을 하다 생각난 것이 결과적으로 최솟값을 구하려면
두 배열 중 하나의 배열에선 최솟값을 다른 하나의 배열에서 최댓값을 곱하여서 더하는 것이 최솟값을 구한다
는 것이었습니다.
이에 sort()를 이용하여 A 배열은 오름차순, B배열은 내림차순으로 정렬해주고
for문을 이용해서 각 배열의 i번째있는 숫자들을 꺼내서 곱하고 답에 더하는 방식을 취했습니다.
function solution(A, B) {
let answer = 0;
A = A.sort((a, b) => a - b);
B = B.sort((a, b) => b - a);
for (let i = 0; i < A.length; i++) {
answer += A[i] * B[i];
}
return answer;
}
[프로그래머스] JadenCase 문자열 만들기 (0) | 2023.03.23 |
---|