[TIL_41] C# 나누어 떨어지는 숫자 배열

H·2024년 2월 21일
0

문제 설명

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();
    }
}


  1. solution 메소드는 int[] arr과 int divisor 두 개의 매개변수를 받음
    2.배열 arr을 순회하면서 각 요소를 divisor로 나누었을 때 나머지가 0이 되는지 확인하여, 나누어 떨어지는 요소를 result 리스트에 추가

  2. 만약 result 리스트가 비어있다면, 나누어 떨어지는 요소가 없다는 의미이므로 -1을 담은 배열을 반환.

  3. 그렇지 않다면, result 리스트를 정렬한 후, 정렬된 결과를 배열로 변환하여 반환.

입력 배열을 한 번 순회하고, 추가적으로 정렬을 수행하기 때문에 시간 복잡도는 O(nlogn)이며, 여기서 n은 입력 배열의 길이.

profile
IT 서비스 구현 및 게임에 관심이 많습니다.

0개의 댓글