1. 조건
2. 내 생각
A와 B 배열의 길이는 같기에 하나의 반복문에서 각각 A와 B의 인덱스번호에 맞는 값들을 곱해 더해주면 된다고 생각했었다.
3. 실행 결과
import java.util.Arrays;
import java.util.Collections;
class Solution
{
public int solution(int []A, int []B) {
int answer = 0;
for (int i=0; i<A.length ; i++) {
answer += A[i] * B[i] ;
}
return answer;
}
}
하지만 정답은 아니었고 내가 작성한 코드라면 11이 나오는게 맞는데 왜 기댓값이 10이며 오답인지 확인을 위해 문제를 다시 읽어보았다.
슬쩍 읽고 쉽다고 생각해 제대로 읽지 않았던 것이 문제였고 최솟값을 구해야 했다.
4. 개선 결과
import java.util.Arrays;
import java.util.Collections;
class Solution
{
public int solution(int []A, int []B) {
int answer = 0;
Arrays.sort(A);
Integer[] BInteger = new Integer[B.length];
for (int i = 0; i < B.length; i++) {
BInteger[i] = B[i];
}
Arrays.sort(BInteger, Collections.reverseOrder());
for (int i=0; i<A.length ; i++) {
answer += A[i] * BInteger[i] ;
}
return answer;
}
}
각각의 A와 B 배열을 오름차순과 내림차순 정렬을 한 후 각각의 인덱스번호의 값을 곱해 더해주면 된다고 생각했고 받아오는 배열값을 정렬하고 반복문을 사용했다.
여기서 한 가지 주의할 점은, 오름차순인 Arrays.sort(A);의 경우 그냥 배열인 A를 넣어주면 되지만 내림차순을 해야할 때 객체가 아닌 int 배열을 사용할 수 없다고 한다. 그래서 int 배열을 Integer 배열로 변경 후 사용할 수 있었다.
'자바 알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 부족한 금액 계산하기 (0) | 2023.05.08 |
---|---|
[알고리즘] 프로그래머스 - 올바른 괄호 (Level 2) (0) | 2023.05.05 |
[알고리즘] 프로그래머스 - JadenCase 문자열 만들기 (0) | 2023.04.30 |
[알고리즘] 프로그래머스 - 자연수 뒤집어 배열로 만들기 (0) | 2023.02.26 |
[알고리즘] 프로그래머스 - 숫자 문자열과 영단어 (0) | 2023.02.20 |