본문 바로가기
백준

[백준] 1026번 : 보물 – JAVA [자바]

by Hongwoo 2022. 3. 23.
반응형

 

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

 

1026번: 보물

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

www.acmicpc.net

 

 


  • 문제


  • 문제 풀이

백준 1026번 보물은 실버 4 난이도의 sorting을 이용해서 푸는 문제이다.

 

이 문제에는 배열 A, B가 있고 배열 B는 그대로 둔 채 배열 A를 재배치해서 S = A[0] * B[0] + ... + A[N-1] * B[N-1]가 최소값이 되게 하면 된다.

 

이 문제 풀이는 되게 간단하다. Arrays.sort() 메서드를 이용해서 배열 A, B를 증가하는 배열로 만든다. 

Arrays.sort(A);
Arrays.sort(B);

그러면 A[0]은 최소값, B[N-1]은 최대값이 될거다. 최소값이랑 최대값들끼리 곱해준 다음에 더해주면 답이 되겠다.

 


  • 코드
import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
import java.util.*;
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int[] A = new int[n];
        int[] B = new int[n];
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringTokenizer stk = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            A[i] = Integer.parseInt(st.nextToken());
            B[i] = Integer.parseInt(stk.nextToken());
        }
        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.print(sum);
    }
}

 


  • 후기

되게 간단한 수학 문제였던거 같다. 백준에 수학 문제가 많으니 앞으로 수학 문제들도 많이 풀어봐야 될거 같다.

 

반응형

댓글