프로그래머스 배열 비교하기

KIMYEONGJUN·2026년 7월 22일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.

내가 이 문제를 보고 생각해본 부분

main 메서드에서 비교할 배열 쌍들을 각각 arr1List와 arr2List에 2차원 배열로 선언했다.
배열 쌍의 수만큼 반복문을 돌면서 각 쌍에 대해 compareArrays 메서드를 호출하여 결과를 구한다.
결과값은 콘솔에 출력한다.
compareArrays 메서드의 동작은 다음과 같다.
두 배열의 길이를 비교한다. 길이가 더 긴 배열이 크다고 판단하여, arr1이 더 길면 1을, arr2가 더 길면 -1을 반환한다.
배열 길이가 같으면 각 배열의 모든 원소 합을 구한다.
합을 비교하여 더 큰 쪽의 배열이 크다고 판단하여, arr1이 더 합이 크면 1을, arr2가 더 크면 -1을 반환한다.
길이도 같고 합도 같으면 두 배열은 같다는 의미로 0을 반환한다.

코드로 구현

class Solution {
    public int solution(int[] arr1, int[] arr2) {
        if (arr1.length > arr2.length) {
            return 1;
        } else if (arr1.length < arr2.length) {
            return -1;
        } else {
            int sum1 = 0, sum2 = 0;
            for (int num : arr1) sum1 += num;
            for (int num : arr2) sum2 += num;

            if (sum1 > sum2) {
                return 1;
            } else if (sum1 < sum2) {
                return -1;
            } else {
                return 0;
            }
        }
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 배열 비교하기
public class Main89 {
    public static void main(String[] args) {
        int[][] arr1List = {
                {49, 13},
                {100, 17, 84, 1},
                {1, 2, 3, 4, 5}
        };
        int[][] arr2List = {
                {70, 11, 2},
                {55, 12, 65, 36},
                {3, 3, 3, 3, 3}
        };

        for (int i = 0; i < arr1List.length; i++) {
            int result = compareArrays(arr1List[i], arr2List[i]);
            System.out.println(result);
        }
    }

    private static int compareArrays(int[] arr1, int[] arr2) {
        if (arr1.length > arr2.length) {
            return 1;
        } else if (arr1.length < arr2.length) {
            return -1;
        } else {
            int sum1 = 0, sum2 = 0;
            for (int num : arr1) sum1 += num;
            for (int num : arr2) sum2 += num;

            if (sum1 > sum2) return 1;
            else if (sum1 < sum2) return -1;
            else return 0;
        }
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글