최솟값 만들기

하이솝·2026년 3월 7일

1차 실행 오류
조건에서 배열의 크기가 1000이하인 상황에서 stream의 반복 호출로 인한 오버헤드 발생이 원인이 됨

import java.util.Arrays;
class Solution
{
    public int solution(int []A, int []B)
    {
        int answer = 0;
        int []sortedA = Arrays.stream(A).sorted().toArray(); // 오름차순 정렬
        int []sortedB = Arrays.stream(B).sorted().map(n -> -n).sorted().map(n -> -n).toArray(); // 내림차순 정렬
        for (int i = 0; i < sortedA.length; i++) {
            answer += sortedA[i] * sortedB[i];
        }
        return answer;
    }
}

소요 시간: 18분
.xxx()의 형태를 계속 이어나가는 메서드 체이닝(method chaining) 방식을 이용할 때 stream이 필요하지만, 위의 코드와 같이 오름차순 정렬만 하는 과정에서는 메서드 체이닝이 불필요함

import java.util.Arrays;
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[A.length - 1 - i];
        }
        return answer;
    }
}

0개의 댓글