https://school.programmers.co.kr/learn/courses/30/lessons/12941
문제
- 입력으로 1차원 int 배열 A, B ( 1 <= A.length, B.length <= 1000, 1 <= A.[i], B[i] <= 1000 )가 입력으로 들어옴.
- 각 배열에서 수를 1개씩 선택하여 둘을 더한 후 최종 값에 더한다. 이 때 선택하여 사용한 수는 다시 사용할 수 없다.
- 최종 값이 최소가 될 수 있도록 하라.
완성 코드
import java.util.Arrays;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
for (int i = 0; i < A.length; i++) {
answer += A[i] * B[B.length - 1 - i];
}
return answer;
}
}
간단하게 두 수를 오름차순 정렬한 후 서로 역순이 되도록 이용하여 곱한 후 더해주었다.
가장 큰 수와 가장 작은 수를 곱하여 두 수가 해당 값에서 최선으로 작은 수가 되도록 하였다.
두 배열이 서로 역순이 되도록 (오름차순, 내림차순 또는 내림차순, 오름차순) 이 되도록 하여 같은 방향에서 곱해주는 것과 같은 동작 방법이다.
'프로그래머스 문제 풀이 > 프로그래머스 (JAVA)' 카테고리의 다른 글
JAVA 프로그래머스 Lv.2 이진 변환 반복하기 (0) | 2024.12.22 |
---|---|
JAVA 프로그래머스 Lv.2 JadenCase 문자열 만들기 (1) | 2024.12.21 |
JAVA 프로그래머스 Lv.3 등굣길 (0) | 2024.12.19 |
JAVA 프로그래머스 Lv.3 정수 삼각형 (1) | 2024.12.17 |
JAVA 프로그래머스 Lv.3 풍선 터트리기 (1) | 2024.12.16 |