본문 바로가기
JAVA

코딩테스트 ->연습문제->최솟값 만들기

by Hwoarang757 2021. 8. 8.

출처 : https://programmers.co.kr/learn/courses/30/lessons/12941

 

코딩테스트 연습 - 최솟값 만들기

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱

programmers.co.kr

 

아 .... 정확성 효율성,,,, 정말 저는 기초가 없었다고 느끼네요 ... 다시 처음 개념부터 배워 보려고 합니다..

 

import java.util.Arrays;
import java.util.Comparator;
import java.util.Stack;

public class TestClass {

	public static void main(String[] args) {

		int[] A = { 1,2};
		int[] B = { 3,4};

		System.out.println(solution(A,B));

	}


	public static int solution(int[] A,int[] B) {
		//int answer = 0;

		Stack<Integer> s = new Stack<Integer>();
		s.setSize(1);

		//Integer a[] = Arrays.stream(A).boxed().toArray(Integer[]::new);
		//Integer b[] = Arrays.stream(B).boxed().toArray(Integer[]::new);

		Arrays.sort(A);
		Arrays.sort(B);
		//Arrays.sort(b , Comparator.reverseOrder());

		int idx = 0;
		int xdi = B.length -1;
		for(int i : A) {

			if(idx == 0)
				s.set(0, i * B[xdi]);
			else {
				int val = s.peek();

				s.set(0 , val + (i * B[xdi]) );
			}

			idx++;
			xdi--;
		}

		return s.get(0);
	}
}