반응형
01 산술평균
소수점 이하 첫째 자리에서 반올림한 값을 출력한다. Math.Round를 사용했다.
(int)Math.Round(sum / n)
02 중앙값
문제에서 N이 홀수인 조건이 있다. 홀수가 아니였으면 푸는게 복잡했을텐데 홀수이므로 입력받은 값들을 정렬시키고 중간위치에 있는애를 출력하면 된다.
(int)list[n/2]
03 최빈값
제일 구하기 복잡했던 최빈값 먼저 생각했던 방법은 Dictionary를 사용해서 입력받은 m이 있는 경우 해당 Value값을 증가시키고 없는 경우 Key가 m, Value가 1인 값을 추가한다.
for(int i = 0; i<n;i++)
{
double m = double.Parse(Console.ReadLine());
if (dict.ContainsKey(m)) dict[m]++;
else dict.Add(m, 1);
}
그리고 Value를 기준으로 내림차순으로 정렬하고 ThenBy를 이용해 같이 동일한 경우 오름차순으로 정렬되도록 하였다.
var dict2 = dict.OrderByDescending(x => x.Value).ThenBy(x => x.Key).ToDictionary(x => x.Key, x => x.Value);
여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력한다는 조건이 있는데 이러한 경우를 대비해서 ElementAt를 이용해서 두번째 작은값을 출력하도록한다.
double mode = 0;
if(dict2.Count > 1)
{
if (dict2.Values.ElementAt(1) == dict2.Values.ElementAt(0)) mode = dict2.Keys.ElementAt(1);
else mode = dict2.Keys.ElementAt(0);
}
04 범위
list를 정렬시킨 후 마지막에 위치한 요소에서 첫번째 요소를 뺀 값을 출력한다.
(int)(list[n-1]-list[0])
코드 전문
using System;
using System.Collections.Generic;
using System.Linq;
namespace baek2
{
class Program
{
public static void Main()
{
int n = int.Parse(Console.ReadLine());
List<double> list = new List<double>();
Dictionary<double, double> dict = new Dictionary<double, double>();
double sum = 0;
for(int i = 0; i<n;i++)
{
double m = double.Parse(Console.ReadLine());
list.Add(m);
if (dict.ContainsKey(m)) dict[m]++;
else dict.Add(m, 1);
sum += m;
}
list.Sort();
// 최빈값 구하기
var dict2 = dict.OrderByDescending(x => x.Value).ThenBy(x => x.Key).ToDictionary(x => x.Key, x => x.Value);
double mode = 0;
if(dict2.Count > 1)
{
if (dict2.Values.ElementAt(1) == dict2.Values.ElementAt(0)) mode = dict2.Keys.ElementAt(1);
else mode = dict2.Keys.ElementAt(0);
}
else mode = dict2.Keys.ElementAt(0);
Console.WriteLine((int)Math.Round(sum / n));
Console.WriteLine((int)list[n/2]);
Console.WriteLine((int)mode);
Console.Write((int)(list[n-1]-list[0]));
}
}
}
반응형
'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글
백준 C# - 1021 +) 풀이 (0) | 2024.03.31 |
---|---|
백준 C# - 14425 (0) | 2024.03.31 |
C# - 1966 +) 풀이 (0) | 2024.03.17 |
백준 C# - 11286 +) 눈물의 풀이 (2) | 2024.03.17 |
백준 C# - 1235 +) 풀이 (0) | 2024.03.13 |
댓글