Jun 개발노트

프로그래머스 - 최소값찾기

2020-02-25

최소값찾기

  1. 이해

    • 주어진 두배열의 원소들을 하나씩 곱하여 더한 결과값이 최소의 숫자가 되게 하여라
  2. 계획

    • 제일 작은수와 제일 큰수과 곱하였을때가, 제일 최소의 수가 나오는 경우의 수다
    • 두배열의 정렬을 한쪽은 내림차순, 한쪽은 올림차순으로 정렬한다.
    • 반복문을 돌아 같은 인덱스의 값을 찾아 곱을 한다음 결과에 담아 리턴한다.
  3. 실행

    describe("최솟값 만들기", () => {
        it("최종", () => {
            expect(solution([1, 4, 2], [5, 4, 4])).toEqual(29);
        });
        it("정렬", () => {
            expect(alignItem([1, 4, 2], [5, 4, 4])).toEqual(29);
        });
    });
    
    const alignItem = (arr1, arr2) => {
        arr1.sort((a, b) => a - b);
        arr2.sort((a, b) => b - a);
        let len = arr1.length;
        let result = 0;
        for (let i = 0; i < len; i++) {
            result += arr1[i] * arr2[i];
        }
        return result;
    };
    const solution = (arr1, arr2) => {
        return alignItem(arr1, arr2);
    };
    
  4. 반성

    • 곱셉이라는 조건을 늦게확인했다.. 제한조건을 잘 확인하자.
    • 함수의 리턴 값은 하나의 자료형태이다. 두개를 리턴할수없다. == 배열두개를 리턴하려고 시도했음