✔ 최솟값 만들기
문제 분석하기
A 배열과 B 배열을 정렬한 후, A 배열에서 최솟값을 뽑았을 때 B 배열에서는 최댓값을 뽑아 곱하여 곱한 값이 작게 만들도록 함
손으로 풀어보기
- A 배열과 B 배열을 정렬하기
- A 배열은 앞에서부터, B 배열은 뒤에서부터 가져와서 곱하여 누적하기
- 누적된 값 반환하기
슈도코드 작성하기
A, B(길이가 같은 배열)
answer(누적된 최솟값)
A, B 배열 정렬
for(i -> 배열의 크기만큼) {
answer += A[i] * B[B의 길이 - 1 - i]
}
answer 반환
코드 구현하기
/**
* 12941) 최솟값_만들기
*/
public class L016_12941 {
// A, B(길이가 같은 배열)
public int solution(int[] A, int[] B) {
// answer(누적된 최솟값)
int answer = 0;
// A, B 배열 정렬
Arrays.sort(A);
Arrays.sort(B);
// A 배열은 앞에서부터(작은 값), B 배열은 뒤에서부터(큰 값) 가져와서 곱하여 누적하기
for (int i = 0; i < A.length; i++) {
answer += A[i] * B[B.length - 1 - i];
}
// answer 반환
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
L016_12941 solution = new L016_12941();
int[] A = { 1, 4, 2 };
int[] B = { 5, 4, 4 };
int result = solution.solution(A, B);
System.out.println(result);
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[12946] 하노이의 탑 (0) | 2024.01.08 |
---|---|
[12945] 피보나치 수 (0) | 2024.01.08 |
[12939] 최댓값과 최솟값 (0) | 2024.01.08 |
[12936] 줄 서는 방법 (0) | 2024.01.07 |
[12924] 숫자의 표현 (0) | 2024.01.07 |