https://school.programmers.co.kr/learn/courses/30/lessons/181881
두 배열을 비교하는 법
Java - 두 배열을 비교하는 방법 (codechacha.com)
1) Arrays.equals()로 일차원 배열 비교
- 인자로 전달된 두 개의 일차원 배열을 비교하여 같은지 다른지 boolean으로 결과를 리턴
import java.util.Arrays;
public class Example1 {
public static void main(String[] args) {
int[] first = { 1, 2, 3 };
int[] second = { 1, 2, 3 };
int[] third = { 1, 2, 3, 4 };
System.out.println("first is equal to second ? "
+ Arrays.equals(first, second));
System.out.println("first is equal to third ? "
+ Arrays.equals(first, third));
System.out.println("first is equal to null ? "
+ Arrays.equals(first, null));
}
}
2) Arrays.deepEquals()로 다차원 배열 비교
- Arrays.deepEquals()를 사용하면 두 개의 다차원 배열이 같은지 다른지 비교할 수 있다.
- 결과는 boolean으로 리턴된다.
import java.util.Arrays;
public class Example2 {
public static void main(String[] args) {
int[][] first = { {1, 2, 3}, {4, 5, 6} };
int[][] second = { {1, 2, 3}, {4, 5, 6} };
int[][] third = { {4, 5, 6}, {1, 2, 3} };
System.out.println("first is equal to second ? "
+ Arrays.deepEquals(first, second));
System.out.println("first is equal to third ? "
+ Arrays.deepEquals(first, third));
System.out.println("first is equal to null ? "
+ Arrays.deepEquals(first, null));
}
}
정답
import java.util.Arrays;
class Solution {
public int solution(int[] arr) {
int answer = 0;
int count = 0;
while(true)
{
int next[] = Arrays.copyOf(arr,arr.length);
for(int i=0; i<arr.length; i++)
{
if(arr[i]>=50 && arr[i]%2 == 0)
{
next[i] = arr[i] /2;
}
else if(arr[i]<50 && arr[i]%2 ==1)
{
next[i] = arr[i]*2 +1;
}
}
if(Arrays.equals(arr,next))
break;
arr = Arrays.copyOf(next, next.length);
answer++;
}
return answer;
}
}
다른 사람의 풀이
class Solution {
public int solution(int[] arr) {
int answer = 0;
int[] next = arr.clone();
int[] prev = arr.clone();
boolean isDiff = false;
while (true) {
prev = next.clone();
isDiff = false;
next = new int[arr.length];
for (int i=0; i<arr.length; i++) {
if (prev[i] == 0) {
continue;
}
if (prev[i] >= 50 && prev[i] % 2 == 0) {
next[i] = prev[i] / 2;
} else if (prev[i] < 50 && prev[i] % 2 == 1) {
next[i] = prev[i] * 2 + 1;
} else {
next[i] = prev[i];
}
if (prev[i] != next[i]) {
isDiff = true;
}
}
if (isDiff) {
answer++;
} else {
return answer;
}
}
}
}
'Java > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 길이에 따른 연산 (0) | 2024.04.06 |
---|---|
[JAVA] 프로그래머스 - 1로 만들기 (0) | 2024.04.06 |
[JAVA] 프로그래머스 - 조건에 맞게 수열 변환하기 1 (0) | 2024.04.06 |
[JAVA] 프로그래머스 - 수열과 구간 쿼리 1 (1) | 2024.04.05 |
[JAVA] 프로그래머스 - n보다 커질 때 까지 더하기 (0) | 2024.04.05 |