코딩테스트연습/[프로그래머스] Java

[프로그래머스] Java 코딩테스트 연습 - 배열 비교하기

_꼬마돌 2023. 6. 25. 00:04
반응형

[프로그래머스] Java 코딩테스트 연습 - 배열 비교하기

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/181856

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

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

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

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

 

풀이

문제 설명,,이게 무슨 말인가 이해하는 데 시간이 꽤 걸렸다.
결국 그냥 문제 보고 문제에 맞게 순서대로 작성해봤다. 코드를 쓰다가 arr의 길이와 원소의 합은 따로 변수를 선언하고 값을 넣는 게 편할 것 같아서 변수로 뺐다. 

첫 번째 if문에서 arr1 과 arr2 의 길이가 다를 때, arr1이 더 길면 1을, arr2가 길면 -1, 같다면 0을 answer에 저장하도록 했다. 두 번째 if문에서는 arr1과 arr2의 길이가 같을 때, arr1과 arr2의 모든 원소의 합의 크기를 비교해서 arr1이 크면 1, arr2가 크면 -1, 크기가 같다면 0을 answer에 저장하도록 했다.

 

소스코드

class Solution {
    public int solution(int[] arr1, int[] arr2) {
        int answer = 0;
        int lenArr1 = arr1.length;
        int lenArr2 = arr2.length;
        int sumArr1 = 0;
        int sumArr2 = 0;
        
        for (int i = 0; i < lenArr1; i++) {
            sumArr1 += arr1[i];
        }
        
        for (int i = 0; i < lenArr2; i++) {
            sumArr2 += arr2[i];
        }
        
        if (lenArr1 != lenArr2) {
            if (lenArr1 > lenArr2) {
                answer = 1;
            } else if (lenArr1 < lenArr2) {
                answer = -1;
            } else {
                answer = 0;
            }
        }
        
        if (lenArr1 == lenArr2) {
            if (sumArr1 > sumArr2) {
                answer = 1;
            } else if (sumArr1 < sumArr2) {
                answer = -1;
            } else {
                answer = 0;
            }
        }
        
        return answer;
    }
}

 

반응형