막무가내로 삽질하는 알고리즘

MoveZeros

Jungsoomin :) 2020. 10. 4. 03:49

숫자의 배열이 주어진다.

 

0은 모두 뒤에 위치시켜야하고 숫자들은 정렬되야한다.

 

  • input {0,3,2,0,8,5}
  • output {2,3,5,8,0,0}

키포인트는 0이 들어갈 인덱스를 추출하는 것, 그전까지 숫자를 넣는 것

원소가 0 이 아니라면 인덱스에 원소를 넣고 index를 증가 

  • 마지막에는 index에 0부터 들어갈 값이 남는다.
int[] arr = new int[]{0,3,2,0,8,5};
        int index = 0;
        //1
        for(int i=0; i<arr.length;i++){
            if(arr[i] != 0) {// 0 이 아니면
                arr[index] = arr[i];
                index++;
                // 0 이 아닌 숫자라면 첫번쨰부터 순차적으로 담는다.
            }
        }

 

정렬을 한다.

  • index 에는 0 이 들어값이 있으므로 0부터 index 전까지 sort한다.
 Arrays.sort(arr,0,index);//나머지 칸에 숫자가 있으므로 범위 정렬

 

0을 추가한다.

  • while 문으로 index 를 증가시키며 0을 넣는다.
while(index<arr.length){// 저장한 인덱스 값으로 나머지는 0을 넣는다.
            arr[index] = 0;
            index ++;
        }

'막무가내로 삽질하는 알고리즘' 카테고리의 다른 글

우선순위 큐  (0) 2020.10.18
Merge Interval  (0) 2020.10.11
DailyTemperature  (0) 2020.10.11
TwoSum  (0) 2020.10.11
Meeting Room1  (0) 2020.10.04