알고리즘/C#

[C#] 숫자 배열 중 과반수 찾기

야아옹 2020. 9. 11. 17:09

[알고리즘_#1] 숫자 배열 중 과반수 찾기

 

문제 : 숫자 배열중 중복된 숫자를 찾고 과반수를 넘겼을 시 반환 아닐 시 -1 을 반환 하는 메소드 만들기

        과반수 = 배열 길이 n 의 나누기 2

 

Ex) 3, 5, 3, 3, 3, 4, 3, 1 

     * 과반수 8 / 2 = 4

     * 반환값 = 3

    1, 5, 3, 6, 3, 4, 3, 1 

    * 과반수 8 / 2 = 4

     * 반환값 = -1

 

-> 코딩

class Program
    {
        public static int[] arr1 = { 3, 5, 3, 3, 3, 4, 3, 1 };
        public static int[] arr2 = { 1, 5, 3, 6, 3, 4, 3, 1 };

        public static void Main(string[] args)
        {
            Console.WriteLine("첫번째 배열 1, 5, 3, 3, 3, 4, 3, 1 중 과반수 {0}", Solution(arr1));

            Console.WriteLine("두번째 배열 1, 5, 3, 6, 3, 4, 3, 1 중 과반수 {0}", Solution(arr2));
        }
        private static int Solution(int[] nums)
        {
            int result = 0;

            int majorityNum = (nums.Length / 2);

            foreach (int item in nums.Distinct().ToArray())
            {
                int vv = nums.Count(x => x == item);

                if (vv > majorityNum)
                {
                    result = item;
                    break;
                }
                else
                {
                    result = -1;
                    continue;
                }
            }
            return result;
        }

    }

-> 결과