본문 바로가기
Language/알고리즘 문제풀이

프로그래머스 최솟값 만들기(Java)

by wakestand 2019. 9. 17.
반응형

사이트명 : 프로그래머스(Programmers)

문제명 : 최솟값 만들기

언어 : 자바(Java)

 

두 배열을 가지고

A배열의 값, B배열의 값을 곱했을 때

최소값이 나오는 경우를 구해야 하는데

 

1*5, 4*2, 4*4 이런식으로 한번씩만 곱할 수 있다

근데 문제를 슥 보면 결국 최솟값을 구하는 방법은

A배열 최대값 * B배열 최솟값 이런 식으로 곱한 뒤 더해주면 된다는 사실을 알 수 있는데

 

내 풀이방법은 아래와 같다

 

일단 A배열과 B배열을 정렬한 뒤

A배열은 0부터 진행해 최대값 B배열은 끝부터 진행해 최솟값을 가져와서 곱해준 뒤

이 값들을 더해서 반환하면 된다

 

프로그래머스에 바로 적용 가능한 코드는 아래와 같다

 

import java.util.Arrays;
class Solution
{
    public int solution(int []A, int []B)
    {
        int answer = 0;	
        int j = B.length - 1;
        
        Arrays.sort(A);
        Arrays.sort(B);
        
        for(int i = 0; i<A.length; i++) {
        	answer = answer + (A[i] * B[j]);
        	j--;
        }

        return answer;
    }
}
반응형

댓글