코딩테스트 연습 - 최솟값 만들기 | 프로그래머스 스쿨 (programmers.co.kr)
파이썬으로는 배열의 정렬을 사용하여 매우 간단하게 풀었다.
[python]
def solution(A,B):
answer = 0
A.sort()
B.sort(reverse=True)
for i in range(len(A)):
answer += A[i]*B[i]
return answer
그런데 자바를 사용할 경우 이슈가 발생했다.
기존에 알고있던 Arrays.sort()와 Arrays.sort(arr, Collections.reverseOrder())을 사용하여 정렬을 하려고 했는데
계속 에러가 났다.
no suitable method found for sort(int[],Comparator<Object>)
구글링 해보니
Comparator는 원시 타입의 int 배열에서는 사용할 수 없었다.
대신, 객체 배열에서는 사용이 가능하기 때문에 int[]를 integer[]로 변환하거나 다른 정렬 알고리즘을 사용하거나 해야했다.
* 이 부분에 대해 따로 포스팅 할 예정이다.
[java]
import java.util.Arrays;
import java.util.Collections;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
Arrays.sort(A);
// Integer[] Br = Arrays.stream(B).boxed().toArray(Integer[]::new);
// Arrays.sort(Br, Collections.reverseOder());
Arrays.sort(B);
for(int i=0;i<A.length;i++){
answer += A[i] * B[B.length-i-1];
}
return answer;
}
}
주석된 부분은 int[]를 integer[]로 변환한 부분인데 하나의 테스트 케이스에서 시간초과가 났다.
그래서 그냥 정렬해준 다음 인덱스를 바꿔주는 방식을 통해 해결하였다.
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
[java/python] 프로그래머스 Lv2. - 하노이 탑 (0) | 2023.05.16 |
---|---|
[python] 13549 - 숨바꼭질 3 (0) | 2023.05.09 |
[python] 프로그래머스 Lv2. - 줄 서는 방법 (0) | 2023.05.05 |
[java/python] 프로그래머스 Lv2. - 숫자의 표현 (0) | 2023.05.04 |
[java/python] 프로그래머스 Lv.2 - 땅따먹기 (0) | 2023.05.04 |