using System;
using System.Collections.Generic;
using System.Linq;
public class Solution {
public int solution(int[] A, int[] B) {
int answer = 0;
List<int> list_A = new List<int>(A);
List<int> list_B = new List<int>(B);
list_A.Sort(); //오름차순 정렬
list_B.Sort(); //오름차순 정렬
list_B.Reverse(); //내림차순 정렬로 변경
for (int i = 0; i < list_A.Count; i++)
{
answer += list_A[i] * list_B[i];
}
return answer;
}
}
해당 문제는 같은 길이를 가진, 2개의 배열의 수를 조합해서 가장 작은 계산 값이 나오게 하는 문제입니다.
곱 연산의 경우, 가장 작은 수와 가장 큰 수를 곱했을 때 결과 값이 가장 작게 되므로,
처음에는 List 형태로 제작하여 Min() 과 Max()함수를 이용해 최솟값과 최댓값을 뽑고,
해당 되는 숫자가진 List를 Remove하는 형태로 제작을 했었습니다.
하지만, Min(), Max()는 List를 전체를 순회하므로, for문과 같이 반복되는 작업을 진행하는 데 있어서는
성능이 좋지 못합니다. 따라서, 2개의 List를 1개는 오름차순, 1개는 내림차순으로 정렬하여,
for문을 통해 곱하도록 수정을 통해 성능을 개선했습니다.
'알고리즘' 카테고리의 다른 글
프로그래머스[C#] 이진 변환 반복하기 (0) | 2024.10.25 |
---|---|
JadenCase 문자열 만들기 (0) | 2024.10.24 |
프로그래머스 C# 가장 가까운 글자 (0) | 2024.07.26 |
프로그래머스 C# 두 개 뽑아서 더하기 (0) | 2024.07.25 |
프로그래머스 C# 문자열 내 마음대로 정렬하 (0) | 2024.06.27 |