[ 같은 숫자는 싫어 ]
https://programmers.co.kr/learn/courses/30/lessons/12906
- 입력 받은 배열 arr는 한 수에 대해서 연속적으로 나타나다가 다른 수를 입력 받는다
따라서, 전 요소와 다른 요소가 나타나면 배열에 추가해주면 된다.- list를 만들고, 첫 리스트를 추가한 후 다음 요소와 비교해주면서 포함하고 있지 않는 요소는 list에 추가해준다.
- list에 있는 요소들을 answer에 모두 .get() 메서드로 추가해주고 answer을 리턴해준다.
import java.util.*;
class Solution {
public int[] solution(int []arr) {
ArrayList<Integer> list = new ArrayList<>();
for(int i=0; i<arr.length; i++) {
if(i==0) {
list.add(arr[i]);
}
else if(arr[i-1]!=arr[i]) {
list.add(arr[i]);
}
}
int[] answer = new int[list.size()];
for(int i=0; i<answer.length; i++) {
answer[i] = list.get(i);
}
return answer;
}
}
배열이란? 데이터의 크기가 정해져 있고, 요소의 추가적인 삽입 삭제가 일어나지 않으며, 검색을 필요로 할 때 유리
리스트란? 데이터의 크기가 정해져 있지 않으며, 삽입 삭제가 많이 일어나며, 검색이 적은 경우 유리.
이번 문제에서 ArrayList라는 개념을 처음 사용해 보았는데, 내 마음대로 add하여 요소를 추가하고 remove 하여 제거할 수 있다는 점에서 편했다.
이후 .get() 메서드를 이용해서 list 요소를 answer[] 배열에 넣어주고 리턴하였다.
<번외>
다른 사람 풀이에서 보니
배열에 0~9 숫자만 넣어주니 전에 수를 넣는 임의의 변수(preNum)를 선언 후 10을 저장
if문으로 전에 수를 가르키는 변수(preNum)이 들어가는 숫자와 같지 않으면 삽입, 그리고 preNum을 들어간 수로 바꿔서 좀 더 간단하게도 표현 가능한 것을 확인했다.