[백준 2592] 대표값 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
10개의 정수에 대해 평균과 최빈값을 구하는 간단한 통계 문제입니다.
- 총
10
개의 자연수가 주어집니다. - 이 수들의 평균(소수점 버림)과 최빈값(가장 자주 등장한 수)을 구해 출력해야 합니다.
- 주어지는 수들은 모두
0
이상100
이하입니다.
접근법
- 먼저
10
개의 수를 입력받으며 누적합과 동시에 각 수의 빈도수를 배열에 기록합니다. - 평균은 총합을
10
으로 나눈 몫입니다. - 최빈값은 빈도수가 가장 큰 수를 찾아 출력합니다.
- 여러 수가 동일한 빈도일 경우, 입력 순서상 먼저 등장한 값을 기준으로 처리되도록 구현합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
class Program {
static void Main() {
int[] freq = new int[101];
int sum = 0;
for (int i = 0; i < 10; i++) {
int num = int.Parse(Console.ReadLine());
sum += num;
freq[num / 10]++;
}
int maxFreq = 0, mode = 0;
for (int i = 0; i < freq.Length; i++) {
if (freq[i] > maxFreq) {
maxFreq = freq[i];
mode = i * 10;
}
}
Console.WriteLine(sum / 10);
Console.WriteLine(mode);
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int sieve[101] = {0, };
int sum = 0;
for (int i = 0; i < 10; i++) {
int num; cin >> num;
sum += num;
sieve[num / 10]++;
}
int maxF = 0, ans;
for (int i = 0; i < 101; i++) {
if (maxF < sieve[i]) {
maxF = sieve[i];
ans = i * 10;
}
}
cout << sum / 10 << "\n" << ans << "\n";
return 0;
}