본문 바로가기
JAVA 알고리즘

백준 1026번 - 보물

by 잡다한 저장소 2019. 10. 29.

https://www.acmicpc.net/problem/1026

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다.

www.acmicpc.net

문제 풀이

예를 들어 1 2 3 4 5인 A 배열과 6 7 8 9 10 인 B 배열이 있을 때 가장 작은 수가 나올 경우는 

서로 역방향이 되어 큰값과 작은값이 곱해질 때이다. 정확히 1*10 + 2*9 + 3*8 + 4*7 + 5*6인 경우이다.

즉 A 배열과 B배열을 정렬한 다음 A와 B의 역방향으로 곱해주면 된다.

 

 

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
 
        Scanner sc = new Scanner(System.in);
 
        int n = sc.nextInt();
 
        int[] A = new int[n];
        int[] B = new int[n];
 
        for (int i = 0; i < n; i++) {
            A[i] = sc.nextInt();
        }
        for (int i = 0; i < n; i++) {
            B[i] = sc.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);
 
    }
}

'JAVA 알고리즘 ' 카테고리의 다른 글

백준 11651번 - 좌표정렬하기2  (0) 2019.10.29
백준 11650번 - 좌표정렬하기  (0) 2019.10.29
백준 2217번  (0) 2019.10.23
백준 1931번  (0) 2019.10.23
백준 - 11047번  (0) 2019.10.20