본문 바로가기

Algorithm/Programers - Java

[프로그래머스(Java)] 배열 비교하기 / Integer.compare

 

Level.0 

 

문제

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

* 제한사항
- 1 ≤ arr1의 길이 ≤ 100
- 1 ≤ arr2의 길이 ≤ 100
- 1 ≤ arr1의 원소 ≤ 100
- 1 ≤ arr2의 원소 ≤ 100
- 문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 배열의 대소관계와 다를 수 있는 점에 유의해주세요.

 

풀이. 1

import java.util.stream.*;
class Solution {
    public int solution(int[] arr1, int[] arr2) {

        int size1 = arr1.length;
        int size2 = arr2.length;
        int sum1 = IntStream.range(0, size1).map(i -> arr1[i]).sum();
        int sum2 = IntStream.range(0, size2).map(i -> arr2[i]).sum();
        
        if(size1<size2) return -1;
        else if (size1 > size2) return 1;
        else {
            if(sum1 == sum2) return 0;
            if(sum1 > sum2) return 1;
            if(sum1 < sum2) return -1;
        }
        return 0;

    }
}

 

 

풀이. 2

import java.util.stream.*;

class Solution {
    public int solution(int[] arr1, int[] arr2) {

        int answer = Integer.compare(arr1.length, arr2.length);
        
        if(answer == 0) 
            answer = Integer.compare(IntStream.of(arr1).sum(), IntStream.of(arr2).sum());
        
        return answer;
    }
}

 

 

Integer.compare

public static int Compare(int x, int y)

매개변수로 주어진 두 정수를 비교하여 값을 리턴하는 메서드이다. 

  • x == y : 0리턴
  • x < y : 0보다 작은 값 리턴. -1
  • x > y : 0보다 큰 값 리턴. 1

 

 


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

 

프로그래머스

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

programmers.co.kr