happy coding

[java] 1026. 보물 본문

coding study/baekjoon

[java] 1026. 보물

yeoonii 2023. 8. 8. 15:59

B배열 값 중 가장 큰 순서대로 인덱스를 찾은 다음 그 순서대로 곱하는 방법을 해보려고 했다.

 

import java.io.*;
import java.util.*;

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;

        // A 배열에 입력받기
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            A[i] = Integer.parseInt(st.nextToken());
        }

        // B 배열에 입력받기
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            B[i] = Integer.parseInt(st.nextToken());
        }

        // A 배열을 오름차순으로 정렬
        Arrays.sort(A);

        // B 배열을 값과 인덱스를 함께 저장하는 배열 선언
        Integer[] bWithIndices = new Integer[N];
        for (int i = 0; i < N; i++) {
            bWithIndices[i] = i;    //B배열의 값에 대한 인덱스 추적 가능
        }
        //B배열의 값이 오름차순으로 정렬될 때의 인덱스 순서 저장
        Arrays.sort(bWithIndices, Comparator.comparingInt(i -> B[i]));

        // S 계산
        long S = 0;
        for (int i = 0; i < N; i++) {
            int bIndex = bWithIndices[N - i - 1]; // 가장 큰 B 값의 인덱스
            S += (long) A[i] * B[bIndex];
        }

        System.out.println(S);
    }
}

처음 해보는 거라서 좀 고생했다.. 

 

https://123okk2.tistory.com/10

 

[JAVA][Array] 배열 정렬

1차원 배열 import java.util.Arrays; Arrays.sort(arr); //오름차순 Arrays.sort(arr, i, j); //i부터 j까지 오름차순 정렬 Arrays.sort(arr, Collections.reverseOrder()); //내림차순 n차원 배열 1) 0번째 인자로 정렬 Arrays.sort(arr,

123okk2.tistory.com

참고한 블로그

'coding study > baekjoon' 카테고리의 다른 글

[java] 1152. 단어의 개수  (0) 2023.08.08
[java] 1550. 16진수  (0) 2023.08.08
[java] 10813. 공 바꾸기  (0) 2023.08.08
[java] 25304. 영수증  (0) 2023.08.05
[java] 2562. 최댓값  (0) 2023.08.04
Comments