같은 숫자는 싫어

김나영·2023년 6월 21일
0

프로그래머스

목록 보기
36/39

문제 : 같은 숫자는 싫어

풀이

ArrayList<Integer> list = new ArrayList<Integer>();
  • 배열 순서를 유지해야하므로 ArrayList 사용
int num = -1;
  • 0 ~ 9에 영향을 받지 않는 수를 임의로 지정
for (int i = 0; i < arr.length ; i++) {
    if(arr[i] != num){ // 01/ 12/ 23/ 34/ 45/ ind=5 :56/idx = 6  67
        list.add(arr[i]);
        num = arr[i]; //1
    }
}
  • 배열 arr의 길이만큼 순회

  • arr 배열의 i번째 숫자가 num과 중복되지 않으면 그 값을 배열에 저장

    • for문 처음에는 num과 숫자가 다르기 때문에 처음 숫자는 무조건 삽입됨
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
   answer[i] = list.get(i);
}
  • answer 배열의 크기는 list의 크기로 선언

    • 맨 마지막 숫자는 숫자가 같던 같지 않던 무조건 들어가야하기 때문에 따로 설정
  • 하나씩 꺼내서 answer 배열에 넣어주고 반환

전체 코드

public class Solution {
    public int[] solution(int []arr) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        int num = -1; // 0 ~ 9에 영향을 받지 않는 수 임의 지정
        for (int i = 0; i < arr.length ; i++) {
            if(arr[i] != num){ // 01/ 12/ 23/ 34/ 45/ ind=5 :56/idx = 6  67
                list.add(arr[i]);
                num = arr[i]; //1
            }
        }
        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}

0개의 댓글