반응형
입력받은 같은 길이의 두 배열에서 하나씩 뽑아 곱한 값을 더했을 때
나올 수 있는 가장 작은 값을 출력하는 문제다.
즉, A 배열의 작은 수와 B배열의 큰 수를 곱하여 순차적으로 더하면 가장 작은 최솟값이 나올것이다
처음에는 A 배열을 오름차순, B 배열을 내림차순으로 재정렬하여 곱한 값들을 모두 더했다.
근데 타임아웃이 되버렷당..ㅎ
그리고 Arrays.sort() 를 활용하면 자동으로 오름차순으로 배열을 정렬해준다는 사실..
문제풀이를 할수록 느끼는 것은 자바 메소를 얼마나 잘 활용하냐에 따라서 속도의 차이가 크다는 것..
내림차순은 불가능하기 때문에 두배열 모두 오름차순으로 정렬하고
하나의 배열만 거꾸로 호출해서 곱해버리면 끝 ㅋ
import java.util.*;
// A 배열의 오름차순 정렬과 B 배열의 내림차순 정렬을 곱하면 가장 작은 수의 곱이 나온다
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++) {
// 내림차순 정렬이 없음으로 B 배열은 뒤부터 호출
answer += A[i] * B[(A.length-1)-i];
}
// System.out.println(answer);
return answer;
}
}
문제를 여러번 반복해서 풀면서 메소드를 잘 활용할 수 있는 것이 관건인 것 같다.
반응형
'[JAVA]' 카테고리의 다른 글
[프로그래머스 JAVA] 숫자의 표현 문제 풀이 (0) | 2023.11.18 |
---|---|
[프로그래머스 JAVA] 이진 변환 반복하기 문제 풀이 (0) | 2023.11.17 |
[프로그래머스 JAVA] 최댓값과 최솟값 풀이 (1) | 2023.11.11 |
[프로그래머스 JAVA] 개인정보 수집 유효기간 풀이 (0) | 2023.11.08 |
[프로그래머스 JAVA] 행렬의 곱셈 풀이 (0) | 2023.10.29 |