array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
arr은 자연수를 담은 배열입니다.
정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
divisor는 자연수입니다.
array는 길이 1 이상인 배열입니다.
using System.Collections.Generic;
public class Solution {
// 주어진 배열(arr)에서 divisor로 나누어 떨어지는 숫자들을 찾아 반환합니다.
public int[] solution(int[] arr, int divisor) {
// 결과를 저장할 리스트 생성
List<int> result = new List<int>();
// 배열을 순회하면서 나누어 떨어지는 숫자를 찾아 결과 리스트에 추가
for(int i=0; i<arr.Length; i++) {
if(arr[i] % divisor == 0) {
result.Add(arr[i]);
}
}
// 결과 리스트가 비어있으면 -1을 담은 배열을 반환
if (result.Count == 0) {
return new int[] { -1 };
}
// 결과 리스트를 정렬
result.Sort();
// 정렬된 결과를 배열로 변환하여 반환
return result.ToArray();
}
}
solution 메소드는 int[] arr과 int divisor 두 개의 매개변수를 받음
2.배열 arr을 순회하면서 각 요소를 divisor로 나누었을 때 나머지가 0이 되는지 확인하여, 나누어 떨어지는 요소를 result 리스트에 추가
만약 result 리스트가 비어있다면, 나누어 떨어지는 요소가 없다는 의미이므로 -1을 담은 배열을 반환.
그렇지 않다면, result 리스트를 정렬한 후, 정렬된 결과를 배열로 변환하여 반환.
입력 배열을 한 번 순회하고, 추가적으로 정렬을 수행하기 때문에 시간 복잡도는 O(nlogn)이며, 여기서 n은 입력 배열의 길이.