[BOJ] 백준 1026 - 보물

Lynn·2021년 1월 1일
0

Algorithm

목록 보기
6/43
post-thumbnail

👩🏻‍💻 문제

👩🏻‍💻 정답 코드

import java.util.Scanner;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) throws Exception {
        Scanner s = new Scanner(System.in);
        int N = s.nextInt();
        int[] A = new int[N];
        int[] B = new int[N];

        for (int i = 0; i < N; i++) {
            A[i] = s.nextInt();
        }
        for (int i = 0; i < N; i++) {
            B[i] = s.nextInt();
        }
        Arrays.sort(A);
        Arrays.sort(B);
        
        int sum = 0;
        for (int i = 0; i < N; i++) {
            sum += A[i] * B[N-1-i];
        }
        System.out.println(sum);
    }
}

정수 배열 A, B에 입력을 받고 Arrays.sort();으로 정렬해준 후,
A의 인덱스는 0부터 증가, B의 인덱스는 N-1부터 감소되게 해서 원소끼리 곱해 주면 S의 최솟값을 구할 수가 있다.

A를 오름차순, B를 내림차순으로 정렬하고 0부터 N까지 인덱스까리 곱해도 된다.
sum 값이 최소가 되려면 최솟값이랑 최댓값이랑 곱해줘야 하는 게 관건
근데 문제에서는 B는 재배열하면 안 된다고 했는데... 이건 나중에 해결


👩🏻‍💻 Remember

배열이나 리스트 오름차순 정렬 ➡️ java.util.Arrays 클래스의 sort() 메서드를 사용.
Arrays 클래스는 배열의 복사, 항목 정렬, 검색과 같은 배열 조작 기능을 가지고 있다.

profile
wanderlust

0개의 댓글

관련 채용 정보