요르딩딩
최솟값만들기:정렬 (Level2) 본문
728x90
반응형
이번문제는 Array.sort를 사용하면 충분히 빠르게 풀 수 있는 문제입니다.
곱의 값을 가장 작게 만들기 위해서는 가장 작은값 X 가장 큰값을 해주어야합니다.
그러기위해서, A배열을 오름차순으로 B배열을 내림차순으로 정렬하여, 서로 곱해주면 됩니다.
Arrays.sort의 내림차순정렬을 위해 Collections.reverseOrder()를 사용하려면 int형이 아닌 integer형으로 형변환을 해주어야합니다.
Arrays.sort(T[] a, Comparator c) method를 제공해 주는데 왜 안되면,
Arrays.sort(T[] a, Comparator c)에서 사용되는 T는 Generic Class로 어떠한 객체도 허용하게 해주었지만,
int는 객체가 아닌 primitive type이었던 것이다.
그래서 해당 코드를 int[]가 아닌 Integer[]로 변경 해주어야한다.
import java.util.*;
class Solution {
public int solution(int[] A, int[] B) {
int answer = 0;
Integer[] TA = new Integer[A.length];
for (int i = 0; i < A.length; i++) { // 정렬을 위한 형변환
TA[i] = (Integer) A[i];
}
Arrays.sort(TA, Collections.reverseOrder()); // 오름차순정렬
Arrays.sort(B); // 내림차순 정렬
for (int i = 0; i < A.length; i++) { // 정렬을 위한 형변환
answer += TA[i] * B[i];
}
return answer;
}
}
728x90
반응형
'[코딩테스트] > 문제풀이' 카테고리의 다른 글
수식최대화 : 문자열 (Level 2) (0) | 2022.09.28 |
---|---|
등굣길 : DP (Level 3) (0) | 2022.09.28 |
단어 변환 : BFS (Level3) (1) | 2022.09.23 |
네트워크 (level 3) (1) | 2022.09.23 |
이중우선순위 큐 (level 3) (0) | 2022.09.19 |
Comments