728x90

-개발환경-

IDE : Eclipse IDE for Java Developers Version: 2020-03 (4.15.0)

공부 자료 :  www.inflearn.com/course/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9E%90%EB%B0%94/lecture/22652

-문제-

- 배열 num을 감안할 때 0이 아닌 요소의 상대적인 순서를 유지하면서 모든 0을 끝으로 이동시키는 함수를 작성하십시오.

 

ex)

Input : [0,3,2,0,8,5] Output : [3,2,8,5,0,0]

 

-접근법-

풀이법1
num의  앞부터 하나씩 접근하는 반복문에서
0이아닌것을 어레이리스트에 더해줌(빅오 N)
NUM.length - 어레이리스트.length  = 0의갯수
어레이리스트에 0의갯수만큼 추가해줌
총빅오(N)

풀이법2
1. 배열 nums(자기자신)에  0이 아닌 값을 차례로 맨앞부터 넣어준다.(index 이용)
2. 기억된 index부터 0을 넣어준다.

 

풀이법2가 더 빠르고 ,공간복잡도도 작다.

-MoveZeros.java-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package codingTest;
 
public class MoveZeros {
 
    public static void main(String[] args) {
        // Testcase1
        int[] nums= {0,3,2,0,8,5};
        
        //Procedure
        int index=0;
        for(int i=0; i<nums.length;i++) {
            if(nums[i]!=0) {
                nums[index]=nums[i];
                index++;
            }
        }
        while(index<nums.length) {
            nums[index]=0;
            index++;
        }
        //Output
        for(int i=0; i<nums.length;i++) {
            System.out.println(nums[i]);
        }
    }
 
}
 
cs

 

더보기

-Description

11~16 :  배열 nums(자기자신)에  0이 아닌 값을 차례로 맨앞부터 넣어준다.(index 이용)

11~16 반복문을 거친후의 index 값


17~20 : 기억된 index부터 0을 넣어준다.

 

-추가개념-

-마침글-

인용

'21년이전 > 자바-Algorithm' 카테고리의 다른 글

DailyTemperature  (0) 2021.03.24
TwoSum  (0) 2021.03.22
MeetingRoom  (0) 2021.03.20

+ Recent posts