TIL

내일배움캠프 31일차 TIL

kimseung2331 2024. 2. 5. 20:31

오늘 학습한 내용

[알고리즘]

 

나누어 떨어지는 숫자 배열

 

반복문을 돌려서 arr[i] % divisor == 0일때의 값을 찾아서 정렬하면 되겠다고 생각했다.
answer의 배열의 크기를 어떻게 처리할까 고민했는데 좋은 방법이 떠오르지 않았는데 더 좋은 방법이 있었을 것 같다.
마찬가지로 divisor로 나누어 떨어지지 않을 경우를 어떻게 처리하는 방법도 더 좋은 방법이 있었을 것 같다.

 

using System;
public class Solution 
{
    public int[] solution(int[] arr, int divisor) 
    {
        int count = 0;
        for (int t = 0; t<arr.Length; t++)
        {
            if (arr[t] % divisor == 0)
            {
                count++;
            }
        }
        int[] answer = new int[count];

        for(int i = 0; i < arr.Length; i++)
        {
            for (int j = 0; arr[i] % divisor == 0; j++)
            {
                answer[j] = arr[i];
                break;
            }
            Array.Sort(answer);
        }

        if (count == 0)
        {
            answer = new int[count + 1];
            answer[count] = -1;
        }
        return answer;
        }
    }

 

다른사람의 풀이

using System.Collections.Generic;
public class Solution
{
    public int[] solution(int[] arr, int divisor)
    {
        var list = new List<int>();
        if (divisor != 1)
        {
            foreach (var v in arr)
            {
                if (v % divisor == 0)
                    list.Add(v);
            }

            if (list.Count == 0)
                list.Add(-1);
        }
        else
        {
            list.AddRange(arr);
        }

        list.Sort();

        return list.ToArray();
    }
}

오늘의 회고

 

해야 할 일

  • 1. 개인과제 완성하기