자바생
Published 2021. 4. 5. 01:52
자바(백준) 1026 보물 BOJ(Java)
728x90

풀이 방법

이 문제를 풀면서 처음에 이진 탐색과 upperbound에 대해 생각하면서 풀었다왜냐하면 index를 바꿔야 하는 줄 알고 문제를 해석했다. 그래서 시간 복잡도가 50^50까지 생각되어 이분 탐색을 생각했다. 그러나 문제를 다시 읽어보니 최솟값만 구하면 되는 것이었다. 그래서 A B 배열을 정렬한 뒤에, A의 첫 번째 index, B의 마지막 index 순차대로 곱하면서 더해주어 문제를 해결했다.

 

사용 개념

Arrays.sort

 

코드

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
31
32
33
34
35
36
37
38
package Data_Structure;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
 
public class BOJ1026 {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
 
        int cnt = Integer.parseInt(br.readLine());
        int sum = 0;
        int arrA[] = new int[cnt];
        int arrB[] = new int[cnt];
 
        st = new StringTokenizer(br.readLine());
        for(int i = 0; i < cnt; i++)
            arrA[i] = Integer.parseInt(st.nextToken());
 
        st = new StringTokenizer(br.readLine());
        for(int i = 0; i < cnt; i++) {
            arrB[i] = Integer.parseInt(st.nextToken());
        }
 
        Arrays.sort(arrA);
        Arrays.sort(arrB);
 
        for(int i = 0; i < cnt; i++){
            sum += arrA[i] * arrB[cnt - i - 1];
        }
 
        System.out.println(sum);
    }
}
 
cs
728x90

'BOJ(Java)' 카테고리의 다른 글

자바(백준) 1406 에디터  (0) 2021.04.05
자바(백준) 1181 단어 정렬  (0) 2021.04.05
자바(백준) 10866 덱  (0) 2021.04.04
자바(백준) 10845 큐  (0) 2021.04.04
자바(백준) 10828 스택  (0) 2021.04.04
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그