[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개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN