백준(Backjoon) 1026, 보물
2021. 7. 6. 10:59ㆍCodingTest
문제풀이
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 |