[BOJ] 2108 통계학

Algorithm 2023. 2. 13. 17:59
반응형

최빈값(最頻-), 모드(mode)는 통계학 용어로, 가장 많이 관측되는 수, 즉 주어진 값 중에서 가장 자주 나오는 값이다. 예를 들어, {1, 3, 6, 6, 6, 7, 7, 12, 12, 17}의 최빈값은 6이다. 최빈값은 산술 평균과 달리 유일한 값이 아닐 수도 있다.

또한 주어진 자료나 관측치의 값이 모두 다른 경우에는 존재하지 않는다.

주어진 자료에서 평균이나 중앙값을 구하기 어려운 경우에 특히 유용하다


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BOJ
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());

            List<int> list = new List<int>();

            for (int i = 0; i < n; i++) {
                list.Add(int.Parse(Console.ReadLine()));
            }

            Console.Clear();
            //Console.WriteLine("-----------------");

            int sum = 0;
            for (int i = 0; i < n; i++)
            {
                sum += list[i];
            }

            Console.WriteLine("{0}", (int)Math.Round( (double)sum / list.Count));
            list.Sort();
            var mid = list[list.Count / 2];
            Console.WriteLine("{0}", mid);

            var frequent = list
               .GroupBy(x => x)
               .OrderByDescending(g => g.Count())
               //.First(g => g.Count() == list.GroupBy(x => x).Max(a => a.Count()))
               .Select(g => new { Num = g.Key, Count = g.Count() }).ToList();

            //foreach (var x in mostFrequent) {
            //    Console.Write("{0} ", x.Num);
            //}
            //Console.WriteLine();
            //foreach (var x in mostFrequent)
            //{
            //    Console.Write("{0} ", x.Count);
            //}

            if (frequent.Count > 1)
            {
                if (frequent[0].Count == frequent[1].Count)
                {
                    Console.WriteLine(frequent[1].Num);
                }
                else
                {
                    Console.WriteLine(frequent.First().Num);
                }
            }
            else {
                Console.WriteLine(frequent.First().Num);
            }


            var range = list.Max() - list.Min();
            Console.WriteLine("{0}", range);
        }
    }
}
반응형

'Algorithm' 카테고리의 다른 글

[BOJ] 1297 TV 크기  (0) 2023.02.07
[BOJ] 3040 백설 공주와 일곱 난쟁이  (0) 2023.02.06
[BOJ] 2581 소수  (0) 2023.02.05
[BOJ/C#] 11945 뜨거운 붕어빵  (0) 2023.02.02
[BOJ/C#] 4796 캠핑  (0) 2023.01.31
: