본문 바로가기
to be 개발자

[알고리즘_자바] MoveZero 배열 에서 0은 다 뒤로 보내고 나머지는 같은 순서로 앞에서부터 담기

by 아셀acell 2020. 9. 18.
반응형

이런 문제 처음봤는데 푸는법도 신기했다 ㅋ0ㅋ 

 

문제

 

int[] num = {0,3,2,0,8,5};

여기서 0을 뺀 숫자들은 순서대로 앞에서부터 담고, 0(들)은 0이 아닌 숫자들 뒤에 담기 - 

 

풀이 

 

// 풀이는 변수를 최소한으로 만드는 것이 효율적이므로, 이렇게 한 것 같은데 나는 먼저 다른 배열을 만들 생각부터 했다..ㅎㅎ

 

int index = 0;

 

for(int i=0;i<num.length;i++){

   if(num[i] != 0){

      num[index] = num[i];

      index++;

   }

}

 

//이렇게 담으면 0들은 빠지고

//심지어 0이 없어도 문제가 일어나지 않는다

 

//0의 수를 그럼 어떻게 구하느냐, 

 

while(index<num.length){

   num[index] = 0;

   index++;

}

 

//이렇게 index를 기준으로 0을 심어준다 (애초에 0이 없었다면 index도 num.length와 같아졌을 것이기 때문에 오류 없음)

//그리고 출력하면 된다 

 

for (int i=0;i<num.length;i++){

   System.out.print(num[i]+" ");

}

 

728x90
반응형
LIST

댓글