문제설명

 

소스코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main
{
	public static void main(String[] args) throws Exception
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		int A[] = new int[n];
		Integer B[] = new Integer[n];
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i = 0; st.hasMoreTokens() == true; ++i) A[i] = Integer.parseInt(st.nextToken());
		st = new StringTokenizer(br.readLine());
		for(int i = 0; st.hasMoreTokens() == true; ++i) B[i] = Integer.parseInt(st.nextToken());
		Arrays.sort(A);
		Arrays.sort(B, Collections.reverseOrder());
		int sum = 0;
		for(int i = 0; i < n; ++i) sum += A[i] * B[i];
		System.out.print(sum);
	}
}

 

설명

  • A는 오름차순으로 정렬하고, B는 내림차순으로 정렬하여 인덱스가 같은 수 끼리 곱해서 더한 값을 출력한다.
배열의 오름차순과 내림차순 정렬
오름차순 정렬
int A[] = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; st.hasMoreTokens() == true; ++i) A[i] = Integer.parseInt(st.nextToken());
Arrays.sort(A); // 오름차순 정렬​


내림차순 정렬

Integer B[] = new Integer[n]; //Integer로 박싱
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; st.hasMoreTokens() == true; ++i) B[i] = Integer.parseInt(st.nextToken());
Arrays.sort(B, Collections.reverseOrder()); //내림차순 정렬, 포장 객체만 올 수 있음