코린이의 소소한 공부노트

[프로그래머스/Lv.1] 나누어 떨어지는 숫자 배열 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.1] 나누어 떨어지는 숫자 배열

무지맘 2022. 11. 26. 00:27

 1. Input

1) int 배열 arr

2) 자연수 divisor

 

2. Output

1) arr의 요소들 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열

2) divisor로 나누어 떨어지는 요소가 없다면 배열에 1을 담아 반환

 

3. Constraint

1) arr은 자연수를 담은 배열

2) arr에 중복되는 숫자는 없음

3) divisor는 자연수

4) arr은 길이 1 이상인 배열

 

4. Example

Input: arr={10,9,7,5}, divisor=5 -> Output: {5,10}

Input: arr={3,2,5}, divisor=10 -> Output: {-1}

 

5. Code

1) 첫 코드(2022/??)

import java.util.Arrays;

int[] answer;
String nums = "";
for(int i=0 ; i<arr.length ; i++)
    if(arr[i]%divisor == 0) nums += arr[i] + " ";
if(nums == "") return new int[] {-1};
String[] s = nums.split(" ");
answer = new int[s.length];
for(int i=0 ; i<s.length ; i++)
    answer[i] = Integer.parseInt(s[i]);
Arrays.sort(answer);
return answer;

2) 엄청 빨라진 코드(2022/11/26)

Arrays.sort(arr);
ArrayList<Integer> list = new ArrayList<Integer>();
for(int n : arr)
    if(n%divisor==0) list.add(n);
if(list.size()==0) list.add(-1);

int[] answer = new int[list.size()];
for(int i=0 ; i<answer.length ; i++)
    answer[i] = list.get(i);
return answer;

  - 특정 부분은 2번이 엄~청 느렸는데, 어떤 케이스인지 알 수 없었음