백준(Backjoon) 1026, 보물

2021. 7. 6. 10:59CodingTest

문제풀이

A배열과 B배열의 각각의 원소에 대한 곱하기의 합이 최소값이 되기 위해서는 A배열의 제일 작은 원소값들과 B 배열의 제일 큰 원소값들이 곱하기를 수행하여야 한다. 따라서 A 배열은 오름차순으로 정렬하고, B 배열은 내림차순으로 정렬하여야 한다.

 

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

public class Main {
	
	
	public static int solution(Integer[] A, Integer[] B, int n)
	{
		Arrays.sort(A);	// 오름차순 정렬
		
		Arrays.sort(B,Collections.reverseOrder());	// 내림차순 정렬
		
		// A*B 합수행
		int answer = 0;
		for(int i=0;i<n;i++)
		{
			answer += (A[i]*B[i]);
		}
	
		return answer;
	}
	
	public static void main(String args[]) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		Integer[] A = new Integer[n];
		Integer[] B = new Integer[n];
		
		A = Arrays.stream(Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray()).boxed()
				.toArray(Integer[]::new);	
		B = Arrays.stream(Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray()).boxed()
				.toArray(Integer[]::new);
		
		System.out.println(solution(A, B, n));
	}
}

 

'CodingTest' 카테고리의 다른 글

백준(Backjoon) 10820, 문자열 분석  (0) 2021.07.07
백준(Backjoon) 10799, 쇠막대기  (0) 2021.07.06
백준(Backjoon) 11655, ROT13  (0) 2021.07.05
백준(Backjoon) 1076, 저항  (0) 2021.07.02
백준(Backjoon) 10798, 세로읽기  (0) 2021.06.30