728x90
1) 주석 없는 VERSION
#include <iostream>
#include <cmath>
#include <stdio.h>
#include <utility>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
int tmp;
int max = 0;
int mode = 0;
bool isSecond = false;
vector<int> array(n);
vector<int> count(8001, 0);
for (int i = 0;i < n;i++) {
cin >> array[i];
tmp = (array[i] <= 0) ? abs(array[i]) : array[i] + 4000;
sum += array[i];
count[tmp] += 1;
if (count[tmp] > max) {
max = count[tmp];
}
}
int middle = round(n / 2);
sort(array.begin(), array.end());
for (int i = -4000;i < 4001;i++) {
tmp = i <= 0 ? abs(i) : i + 4000;
if (count[tmp] == max) {
mode = i;
if (isSecond) break;
isSecond = true;
}
}
cout << round(sum / (double)n) << "\n";
cout << array[middle] << "\n";
cout << mode << "\n";
cout << array[array.size() - 1] - array[0];
}
2) 주석 있는 VERSION
#include <iostream>
#include <cmath>
#include <stdio.h>
#include <utility>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0; // n개의 수들의 합
int tmp; // 음수는 0~4000 으로, 양수는 4001~8000 으로 지정해주기 위함
int max = 0; // 최댓값
int mode = 0; // 빈도수
bool isSecond = false; // 최빈값이 여러개 있을 경우 최빈값 중 두 번째로 작은 수를 출력하기 위함
vector<int> array(n);
vector<int> count(8001, 0);
for (int i = 0;i < n;i++) {
cin >> array[i]; // n 개의 수 입력
// 음수는 0~4000 으로 양수는 4001~8000 으로 빈도수 저장
tmp = (array[i] <= 0) ? abs(array[i]) : array[i] + 4000;
sum += array[i]; // n개의 수들의 합
count[tmp] += 1; // 해당 숫자의 count 인덱스 +1
// count 인덱스가 가장 많은 값인 최빈값 출력
if (count[tmp] > max) {
max = count[tmp];
}
}
int middle = round(n / 2);
sort(array.begin(), array.end());
for (int i = -4000;i < 4001;i++) {
tmp = i <= 0 ? abs(i) : i + 4000;
// 만약 max 값이 또 나온다면
if (count[tmp] == max) {
// 최빈값을 해당 값으로 바꿔주기
mode = i;
if (isSecond) break;
// true로 바꿔줘서 세번째 작은 값 부터는 해당이 안되게끔 바꿔줌
isSecond = true;
}
}
//산술평균
cout << round(sum / (double)n) << "\n";
//중앙값
cout << array[middle] << "\n";
//최빈값
cout << mode << "\n";
//범위
cout << array[array.size() - 1] - array[0];
}
'BEAKJOON' 카테고리의 다른 글
백준(11650번 좌표 정렬하기)풀이 C++ (0) | 2021.01.18 |
---|---|
백준(1427번 소트인사이드)풀이 C++ (0) | 2021.01.18 |
백준(10989번 수 정렬하기 3)풀이 C++ (0) | 2021.01.17 |
백준(2751번 수 정렬하기 2)풀이 C++ (0) | 2021.01.17 |
백준(2750번 수 정렬하기)풀이 C++ (0) | 2021.01.17 |