이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.
입출력 예 #1
예제 1번에서는 arr1의 길이는 2이고 arr2의 길이는 3으로 arr2의 길이가 더 깁니다. 따라서 arr2가 arr1보다 크므로 -1을 return 합니다.
입출력 예 #2
예제 2번에서는 arr1의 길이과 arr2의 길이가 4로 같습니다. arr1의 모든 원소의 합은 100 + 17 + 84 + 1 = 202이고 arr2의 모든 원소의 합은 55 + 12 + 65 + 36 = 168으로 arr1의 모든 원소의 합이 더 큽니다. 따라서 arr1이 arr2보다 크므로 1을 return 합니다.
입출력 예 #3
예제 3번에서는 arr1의 길이와 arr2의 길이가 5로 같고 각 배열의 모든 원소의 합 또한 15로 같습니다. 따라서 arr1과 arr2가 같으므로 0을 return 합니다.
class Solution {
public int solution(int[] arr1, int[] arr2) {
int answer = 0;
return answer;
}
}
class Solution {
public int solution(int[] arr1, int[] arr2) {
int answer = 0;
int sum1 = 0;
int sum2 = 0;
if (arr1.length > arr2.length) {
answer = 1;
} else if (arr1.length < arr2.length) {
answer = -1;
} else {
for(int i = 0; i < arr1.length; i++){
sum1 += arr1[i];
sum2 += arr2[i];
}
if (sum1 > sum2) {
answer = 1;
} else if (sum1 < sum2) {
answer = -1;
} else {
answer = 0;
}
}
return answer;
}
}
int answer,sum1,sum2 값을 0으로 초기화해준다.
if - else if - else문을 활용하여 arr1과 arr2의 배열의 길이 대소관계에 따라 구분했습니다.
길이가 큰 것은 1을 리턴, 길이가 짧은 것은 -1을 리턴, 배열의 길이가 같으면 배열의 원소의 합으로 비교하여 1, -1, 0을 리턴하는데 배열의 길이가 같은 부분을 else로 들어와 명령문 부분에서
for문을 통하여 원소를 받아 합을 구하는 것을 구하였습니다. 그 뒤에 또 if문을 활용하여 합이 크면 1, 작으면 -1, 같으면 0을 반환합니다.
제가 for문에서 i < arr1.length;부분에서 <=것으로 잘못입력하여 길이가 잘못 설정되어 오류가 났었습니다.