요르딩딩

최솟값만들기:정렬 (Level2) 본문

[코딩테스트]/문제풀이

최솟값만들기:정렬 (Level2)

요르딩딩 2022. 9. 27. 16:30
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