배열 비교하기

이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.

  • 두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
  • 배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.

두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.

배열 비교하기Lv.0

181856

https://school.programmers.co.kr/learn/courses/30/lessons/181856?language=javascript

해설

먼저 배열의 길이를 비교하고 길이가 같은 경우에만 배열의 합을 계산하여 비교함으로써 코드가 더 간결하고 효율적으로 동작하게 작성하였습니다.

  • Name
    첫 번째 단계: 배열 길이 비교
    Type
    Description
    • 먼저 주어진 두 배열 arr1과 arr2의 길이를 비교합니다.
    • 만약 arr1의 길이가 arr2보다 작으면 -1을 반환합니다. (즉, arr1이 더 작은 배열)
    • 만약 arr1의 길이가 arr2보다 크면 1을 반환합니다. (즉, arr1이 더 큰 배열)
  • Name
    두 번째 단계: 배열의 합 비교
    Type
    Description
    • 위의 조건에서 두 배열의 길이가 같은 경우에 진입합니다.
    • reduce 함수를 사용하여 각 배열의 합을 계산합니다.
    • sumArr1은 arr1의 요소들의 합을 나타내고, sumArr2는 arr2의 요소들의 합을 나타냅니다.
  • Name
    세 번째 단계: 합의 비교 및 결과 반환
    Type
    Description
    • sumArr1이 sumArr2보다 작으면 -1을 반환합니다. (즉, arr1의 합이 더 작은 경우)
    • sumArr1이 sumArr2보다 크면 1을 반환합니다. (즉, arr1의 합이 더 큰 경우)
    • 위의 모든 조건에 해당하지 않는 경우 (두 배열의 길이가 같고, 합도 같은 경우) 0을 반환합니다.

배열 비교하기

function solution(arr1, arr2) {
    if (arr1.length < arr2.length) {
        return -1;
    } else if (arr1.length > arr2.length) {
        return 1;
    } else {
        const sumArr1 = arr1.reduce((acc, cur) => acc + cur, 0);
        const sumArr2 = arr2.reduce((acc, cur) => acc + cur, 0);

        if (sumArr1 < sumArr2) {
            return -1;
        } else if (sumArr1 > sumArr2) {
            return 1;
        } else {
            return 0;
        }
    }
}