반응형
[프로그래머스] Java 코딩테스트 연습 - 배열 비교하기
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/181856
문제
이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 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;
}
}
반응형
'코딩테스트연습 > [프로그래머스] Java' 카테고리의 다른 글
[프로그래머스] Java 코딩테스트 연습 - 뒤에서 5등까지 (2) | 2023.06.25 |
---|---|
[프로그래머스] Java 코딩테스트 연습 - 배열의 길이에 따라 다른 연산하기 (0) | 2023.06.25 |
[프로그래머스] Java 코딩테스트 연습 - rny_string (0) | 2023.06.24 |
[프로그래머스] Java 코딩테스트 연습 - 간단한 식 계산하기 (1) | 2023.06.24 |
[프로그래머스] Java 코딩테스트 연습 - 문자열 잘라서 정렬하기 (2) | 2023.06.24 |