문제 출처 - Programmers
문제는 여기
[풀이]
1. 입력으로 들어오는 배열 A와 B를 오름차순으로 정렬해준다.
2. A의 i번째와 B의 (길이 - i) 번째를 곱해서 이를 더해준다.
3. 2. 를 A의 길이만큼 해준다.
4. 결과를 출력한다.
[접근]
1. 한 배열에서는 작은 순, 한 배열에서 큰 순으로 곱하면 결과가 최솟값이 나올 것이라고 생각하였다.
[코드]
import java.util.*;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
// A와 B 오름차순 정렬
Arrays.sort(A);
Arrays.sort(B);
// 길이가 같으니까 A 길이만큼 반복
for (int i = 0; i < A.length; i++) {
// 가장 작은 수와 가장 큰 값을 곱하는게 결과적으로 최소값이 나온다.
answer += A[i] * B[B.length - 1 - i];
}
return answer;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 게임 맵 최단거리 (JAVA) (0) | 2022.04.26 |
---|---|
[프로그래머스] 피보나치 수 (JAVA) (0) | 2022.04.25 |
[프로그래머스] 영어 끝말잇기 (JAVA) (0) | 2022.04.22 |
[프로그래머스] 숫자의 표현 (JAVA) (0) | 2022.04.21 |
[프로그래머스] 올바른 괄호 (JAVA) (0) | 2022.04.20 |