말하는 컴공감자의 텃밭

백준 1026번 보물 <S4> - 그리디 본문

알고리즘/Backjoon - Java

백준 1026번 보물 <S4> - 그리디

현콩 2023. 10. 20. 14:52
728x90

백준 1026번 보물

지민 국왕이라니,, 잠만보려나

 

단순한 그리디 문제이다. B를 재배열하면 안된다고는 했지만 ㅎㅅㅎ 그냥 풀기 쉬우려면 정렬하면 그만이다.

가장 큰수와 가장 작은값끼리 곱하면 최소값이기에 sorting해서 반대로만 붙여주면 된다.

ex) 1 3 2 4 와 4 2 1 3이 있다면 정렬 후 -> 1 2 3 4, 1 2 3 4 역순으로 붙여주면 된다. 1 * 4 + 2 * 3 + 3 * 2 + 4 * 1

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.*;
public class Main {
    public static void main(String[] args) {
        // Input
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int [] arr = new int[N];
        int [] arr2 = new int[N];
        int answer = 0;
        
        for(int i = 0; i<N; i++) {
            arr[i] = sc.nextInt();
        }
        for(int i = 0; i<N; i++) {
            arr2[i] = sc.nextInt();
        }
        //Logic
        Arrays.sort(arr);
        Arrays.sort(arr2);
        
        for(int i = 0; i<N; i++) {
            answer += arr[i]*arr2[N-1-i]; // B는 뒤집어서 연산
        }
        
 
        // Output
        System.out.println(answer);
    }
}
 
cs
728x90
Comments