백준 1026 보물 - 자바

손찬호·2024년 5월 3일
0

알고리즘

목록 보기
33/91

풀이 아이디어

입력한 배열 A,B의 크기가 n일 때
배열 S의 최소값을 구하고자 한다면
S = A[0] × B[0] + ... + A[N-1] × B[N-1] 이므로
A와 B배열을 오름차순으로 정렬하고 A의 최소값과 B의 최대값이 곱해지도록
int[] A는 0에서 n-1순서로
int[] B는 n-1에서 0순서로 곱하면 된다.

풀이 코드

import java.util.*;
import java.io.*;

public class _1026{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] a = new int[n];
        int[] b = new int[n];
        for(int i=0; i<n; i++){
            a[i] = Integer.parseInt(st.nextToken());
        }
        st = new StringTokenizer(br.readLine()); 
        for(int i=0; i<n; i++){
            b[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(a);
        Arrays.sort(b);

        int minSum = 0;
        for(int i=0; i<n; i++){

            minSum += a[i] * b[n-i-1];
        }
        System.out.println(minSum);
    }
}
profile
매일 1%씩 성장하려는 주니어 개발자입니다.

0개의 댓글

관련 채용 정보