728x90

[문제 설명]

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

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

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

 

[입출력 예]

arr1 arr2 result
[49, 13] [70, 11, 2] -1
[100, 17, 84, 1] [55, 12, 65, 36] 1
[1, 2, 3, 4, 5] [3, 3, 3, 3, 3] 0

 

[차근 차근 생각해보기]

  1. 먼저 arr1, arr2의 배열들을 각각의 길이까지 돌면서 각 원소들의 합을 구해준다.
  2. arr1의 길이가 arr2의 길이보다 작으면 1을 반환하고 아니면 2를 반환한다.
  3. 만약 arr1의 길이가 arr2의 길이와 같고 각 두 배열의 원소의 합이 같다면 0을 반환한다.
  4. arr1의 길이가 arr2의 길이와 같고 arr1의 원소의 합이 arr2의 원소의 합보다 크다면 1을 반환한다.
  5. arr1의 길이가 arr2의 길이와 같고 arr1의 원소의 합이 arr2의 원소의 합보다 작다면 -1을 반환한다.

 

[코드]

<수정 전>

class Solution {
    public int solution(int[] arr1, int[] arr2) {
        int answer = 0;
        int ar1 = 0;
        int ar2 = 0;

        for(int i : arr1){
            ar1 += i;
        }

        for(int i : arr2){
            ar2 += i;
        }

        if(arr1.length > arr2.length){
            answer = 1;
        }else{
            answer = -1;
        }

        if(arr1.length == arr2.length && ar1 == ar2){
            answer = 0;
        }else if(arr1.length == arr2.length && ar1 > ar2){
            answer = 1;
        }else if(arr1.length == arr2.length && ar1 < ar2){
            answer = -1;
        }


        return answer;
    }
}

 

<수정 후>

class Solution {
    public int solution(int[] arr1, int[] arr2) {
        int answer = 0;
        int ar1 = 0;
        int ar2 = 0;
        
        for(int i : arr1){
            ar1 += i;
        }
        
        for(int i : arr2){
            ar2 += i;
        }
        
        if(arr1.length > arr2.length || (arr1.length == arr2.length && ar1 > ar2)){
            answer = 1;
        }else if(arr1.length < arr2.length || arr1.length == arr2.length && ar1 < ar2){
            answer = -1;
        }else{
            answer = 0;
        }      
          
        return answer;
    }
}

 

[반성할 점]

문제를 그대로 코드로 옮겨 잘 풀었다.

하지만 수정 전 코드를 보면 조금 지저분하다는 느낌이 강했다.

 

공통된 것을 찾아보니 return되는 값이 공통되었고 공통되는 조건을 한 곳에 묶었더니 조금 더 깔끔한 코드가 되었다.

보기 좋은 코드가 좋은 코드라고해서 최대한 보기 좋고 깔끔하게 만들어보려고 하는데 아직 어렵다ㅠ

꾸준히 하다보면 나도 언젠간 성장해있겠지..!   

728x90

+ Recent posts