오늘 학습한 내용
- 프로그래머스 문풀
- Java 문법 학습
문제상황
오늘은 두 배열을 비교하는 방법을 잘 몰라서 문제에서 계속 오답이 나왔어서 이 부분을 기억하고, 정리하고자 TIL을 쓰게 됐다. 해당 문제 '조건에 맞는 수열 변환하기 2'이다.
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/181881
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
시도한 내용
사실 두 배열을 비교하는 방법을 정확하게 알고 있지 않았다.
그냥 짐작으로 동등 연산자(==)는 쓰면 안될 것 같았고, equals()를 사용하면 된다고만 생각했다.
그래서 두 배열을 비교할 때 문자열을 비교하듯이 비교했다.
예를 들어, arr.equals(arr2) 이렇게 로직을 작성했다.
public class Solution {
public static void main(String[] args) {
int[] arr = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println(arr.equals(arr2));
}
}
결과는
false
이유를 알기 위해서 열심히 검색을 해봤다.
그냥 equals를 사용하게 되면 arr와 arr2 배열의 주솟값을 비교하기 때문에 false가 나오는 것이다. 즉, 눈에 같게 보이는 배열도 실제 저장된 주솟값이 다르기 때문에 false가 된다.
이를 해결하려면 다음과 같은 메소드를 사용해야한다.
해결
즉, 두 배열을 비교하기 위해서는 Arrays 클래스에서 제공하는
Arrays.equals(), Arrays.deepEquals() (이건 다차원 배열)을 사용해야 한다는 것이다.
위의 로직을 Arrays.equals()로 바꿔보자.
import java.util.*; //java.util.Arrays;
public class Solution {
public static void main(String[] args) {
int[] arr = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println(Arrays.equals(arr, arr2));
}
}
실행 결과는 true였다.
이에 대한 정확한 내용은 다음을 참고하면 이해할 수 있을 것이다.
java 두 배열 비교할 때 어떻게 하면 좋을까요?
자바에서 Array 둘을 비교할 때에는 어떻게 해야 할까요? 카톡방에 올라온 질문이였습니다. 이에 대한 제 대답은 Arrays.deepEquals를 써라였습니다. 이 글에서도 잠깐 언급을 한 적이 있긴 했습니다만
codingdog.tistory.com
알게된 내용
앞으로 배열을 비교할 때는 Arrays클래스에서 제공하는 Arrays.equals를 사용하자 !
다차원 배열인 경우에는 Arrays.deepEquals를 사용!!
'TIL&WIL' 카테고리의 다른 글
| 2023-06 2주차 WIL (Java 팀 과제, 알고리즘 문풀) (0) | 2023.06.11 |
|---|---|
| 2023-06-11 TIL (Java : 키오스크 프로그램 전반적인 구성 바꾸기) (0) | 2023.06.11 |
| 2023-06-09 TIL (Java 문법 복습, 프로그래머스 문풀) (1) | 2023.06.09 |
| 2023-06-08 TIL (Java : 팀 과제, 프로그래머스 문풀) (0) | 2023.06.08 |
| 2023-06-07 TIL (Java 프로그래머스 문풀, 팀 과제) (0) | 2023.06.07 |