같은 숫자는 싫어

이준경·2021년 5월 2일
0

<나의 풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
 
public class Solution {
    public int[] solution(int []arr) {
 
        List<Integer> list = new ArrayList<>();
        for(int i=0; i<arr.length-1;i++){
            if(arr[i]==arr[i+1])
                continue;
            list.add(arr[i]);
        }
        if(list.isEmpty())
            list.add(arr[0]);
        else if(list.get(list.size()-1!= arr[arr.length-1])
            list.add(arr[arr.length-1]);
 
        int[] answer= new int[list.size()];
        for(int i=0; i<list.size(); i++)
             answer[i]=list.get(i);
 
        return answer;
    }
}
cs
  1. arr[i]와 arr[i+1]이면 컨티뉴, 아니면 list.add(arr[i])
  2. 1번을 arr.length-1 보다 작을때 반복 -1을 안하면 arr[i+1]에서 에러남
  3. list가 빈경우 즉, arr에 하나만 있을경우 대입
  4. 3이 아닌 경우 arr의 마지막 요소를 list의 마지막요소와 확인후 다르면 list.add(arr마지막요소)
  5. list요소를 answer에 대입 후 반환

<다른 사람 풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
 
public class Solution {
    public int[] solution(int []arr) {
        ArrayList<Integer> tempList = new ArrayList<Integer>();
        int preNum = 10;
        for(int num : arr) {
            if(preNum != num)
                tempList.add(num);
            preNum = num;
        }       
        int[] answer = new int[tempList.size()];
        for(int i=0; i<answer.length; i++) {
            answer[i] = tempList.get(i).intValue();
        }
        return answer;
    }
}
cs
  1. preNum은 arr요소를 비교하기 위한 비교역할을 가짐
  2. preNum 초기값은 10이므로 arr의 첫번째 요소랑 다를 수 밖에 없으므로 list에 추가함. 이후 arr 첫번째 요소를 preNum에 대입함.
  3. preNum은 첫번째 요소를 가지고 있음. 따라서 arr의 두번째 요소랑 비교할 수 있게 됨. 만약 둘이 같은 숫자가 아니면 list.add함. 두번째요소를 preNum에 다시 넣음.
    4.리스트 사이즈 만큼 answer 만들어 list값을 차례로 넣어주고 anwer 반환

0개의 댓글

관련 채용 정보