happy coding
[java] 1026. 보물 본문
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
참고한 블로그
'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