문제
접근 방식
- 배열A를 내림차순 정렬
- 배열B를 오름차순 정렬
- 반복문을 통해 A[i] * B[i]를 answer에 +=;
1차 시도
import java.util.Arrays;
import java.util.Collections;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
Integer[] C = Arrays.stream(A).boxed().toArray(Integer[]::new);
Arrays.sort(C, Collections.reverseOrder());
Arrays.sort(B);
for(int i = 0; i < A.length; i++){
answer += (C[i] * B[i]);
}
return answer;
}
}
접근 방식
- 배열A를 stream으로 Integer으로 변경 후 sorts, Collections.reversOrder() 내림차순 정렬
- 배열B를 sorts오름차순 정렬
- 반복문을 통해 A[i] * B[i]를 answer에 +=;
문제 사항
- 정확성에서는 통화했지만 효율성 테스트에서 불합격
2차 시도
import java.util.Arrays;
import java.util.Collections;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
for(int i = 0; i < A.length; i++){
answer += (A[i] * B[B.length-i-1]);
}
return answer;
}
}
- 배열 A를 integer 타입의 배열 C로 치환 후 내림차순을 하는 것에 효율성 문제점을 느낌
- A도 B와 같이 오름차순 정렬 후 반복문에서 배열 B를 B.length-i-1으로 오름차순대로 사용함
'💡알고리즘' 카테고리의 다른 글
[프로그래머스/JAVA] Level 2. 숫자의 표 (0) | 2023.04.19 |
---|---|
[프로그래머스/JAVA] Level 2. 이진 변환 반복하기 (0) | 2023.04.19 |