나누어 떨어지는 숫자 배열
문제정의
나누는 수를 주었을 때 배열 중 나누어 떨어지는 수를 오름차순으로 담아 반환하는 문제이다. 만약 나누어 떨어지는 수가 하나도 없으면 -1을 담아 반환한다.
문제풀이
문제에서 요구하는 것을 그대로 따라가면 된다. 바로 코드를 보도록 하자.
전체 코드는 다음과 같다. 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
29import java.util.*;
public class Mod0Arr {
public static void main(String[] args)
{
int[] arr = {5, 9, 7, 10};
int divisor = 5;
ArrayList<Integer> list = new ArrayList<>();
for(int num : arr)
{
if(num%divisor == 0)
list.add(num);
}
if(list.size() == 0)
{
int[] answer = {-1};
}
else
{
Collections.sort(list);
int[] answer = new int[list.size()];
for(int i = 0; i < list.size(); i++)
answer[i] = Integer.parseInt(list.get(i).toString());
}
}
}1
2
3
4
5
6
7
8int[] arr = {5, 9, 7, 10};
int divisor = 5;
ArrayList<Integer> list = new ArrayList<>();
for(int num : arr)
{
if(num%divisor == 0)
list.add(num);
}
1 | if(list.size() == 0) |
만약 아무 원소도 들어가있지 않다면 -1을 넣어 반환하고 그렇지 않다면 리스트를 정렬하여 정답배열에 답을 넣는다. 이 부분에서 시간복잡도는 정렬이 있기 때문에 \(O(nlogn)\)이다.
테스트
화면이 작아 약간 잘렸는데 아무튼 다 맞았다.