숫자의 배열이 주어진다.
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 |