λ¬Έμ
μλ₯Ό μ²λ¦¬νλ κ²μ ν΅κ³νμμ μλΉν μ€μν μΌμ΄λ€. ν΅κ³νμμ Nκ°μ μλ₯Ό λννλ κΈ°λ³Έ ν΅κ³κ°μλ λ€μκ³Ό κ°μ κ²λ€μ΄ μλ€. λ¨, Nμ νμλΌκ³ κ°μ νμ.
- μ°μ νκ· : Nκ°μ μλ€μ ν©μ NμΌλ‘ λλ κ°
- μ€μκ° : Nκ°μ μλ€μ μ¦κ°νλ μμλ‘ λμ΄νμ κ²½μ° κ·Έ μ€μμ μμΉνλ κ°
- μ΅λΉκ° : Nκ°μ μλ€ μ€ κ°μ₯ λ§μ΄ λνλλ κ°
- λ²μ : Nκ°μ μλ€ μ€ μ΅λκ°κ³Ό μ΅μκ°μ μ°¨μ΄
Nκ°μ μκ° μ£Όμ΄μ‘μ λ, λ€ κ°μ§ κΈ°λ³Έ ν΅κ³κ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μμ κ°μ N(1 ≤ N ≤ 500,000)μ΄ μ£Όμ΄μ§λ€. κ·Έ λ€μ Nκ°μ μ€μλ μ μλ€μ΄ μ£Όμ΄μ§λ€. μ λ ₯λλ μ μμ μ λκ°μ 4,000μ λμ§ μλλ€
μΆλ ₯
첫째 μ€μλ μ°μ νκ· μ μΆλ ₯νλ€. μμμ μ΄ν 첫째 μ리μμ λ°μ¬λ¦Όν κ°μ μΆλ ₯νλ€.
λμ§Έ μ€μλ μ€μκ°μ μΆλ ₯νλ€.
μ μ§Έ μ€μλ μ΅λΉκ°μ μΆλ ₯νλ€. μ¬λ¬ κ° μμ λμλ μ΅λΉκ° μ€ λ λ²μ§Έλ‘ μμ κ°μ μΆλ ₯νλ€.
λ·μ§Έ μ€μλ λ²μλ₯Ό μΆλ ₯νλ€.
λ¬Έμ νμ΄
** μ΅λΉκ° ꡬνκΈ° **
μ΅λΉκ°μ ꡬνλ μκ³ λ¦¬μ¦μ λ€μνκ² μμ μ μμ§λ§, μ λ ₯λλ μ μμ μ λκ°μ 4,000μ λμ§ μκΈ° λλ¬Έμ λλ λ°°μ΄μ μ΄μ©νλ€.
μλ₯Ό λ€μ΄ μ λ ₯λλ μ μμ μ λκ°μ΄ 2λ₯Ό λμ§ μλλ€κ³ νλ€λ©΄, μ μλ -2 ~ 2κΉμ§λ§ λμ¨λ€. μ¦ -2, -1, 0, 1, 2κ° λͺλ² λμ€λμ§ μ μ₯ν λ°°μ΄μ νλ μ μΈνμ¬ λΉλλ₯Ό κ³μ°νλ©΄ λλ€.
-2 | -1 | 0 | 1 | 2 |
μ΄λ λ°°μ΄μ indexλ 0λΆν° μμνκΈ° λλ¬Έμ +2λ₯Ό ν΄μ€μ λ°°μ΄μ μ κ·Όνλ©΄ λλ€.
λ§μ½ μ λ ₯μ΄ -2, -2 ,-1 -1, 2, 1 μΌλ‘ λ€μ΄μ¨ κ²½μ°, λ°°μ΄ μνλ λ€μκ³Ό κ°λ€.
2(-2 μ리) | 2(-1 μ리) | 0(0 μ리) | 1(1 μ리) | 1(2 μ리) |
μ΄λ μ΅λΉκ°μ 2λ‘ -2κ³Ό -1κ° ν΄λΉλλ€.
μ΄ κ²½μ° μ΅λΉκ°μ΄ μ¬λ¬κ°κ° μκ² λμ΄ λ λ€λ₯Έ 쑰건μ λ§μ‘±ν΄μΌ νλ€.
μ μ§Έ μ€μλ μ΅λΉκ°μ μΆλ ₯νλ€. μ¬λ¬ κ° μμ λμλ μ΅λΉκ° μ€ λ λ²μ§Έλ‘ μμ κ°μ μΆλ ₯νλ€.
μ΅λΉκ°μ΄ μ¬λ¬ κ° μμ λμλ μ΅λΉκ° μ€ λλ²μ§Έλ‘ μμ κ°μ μΆλ ₯ν΄μΌ νκΈ° λλ¬Έμ μ’ λ μ½λκ° μΆκ°λμ΄μΌ νλ€.
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
/*
μ°μ νκ· : Nκ°μ μλ€μ ν©μ NμΌλ‘ λλ κ°
μ€μκ° : Nκ°μ μλ€μ μ¦κ°νλ μμλ‘ λμ΄νμ κ²½μ° κ·Έ μ€μμ μμΉνλ κ°
μ΅λΉκ° : Nκ°μ μλ€ μ€ κ°μ₯ λ§μ΄ λνλλ κ°
λ²μ : Nκ°μ μλ€ μ€ μ΅λκ°κ³Ό μ΅μκ°μ μ°¨μ΄
*/
int arr[8001] = { 0, }; //0~4000 (-4000 ~ 0) , 4001~8000 (1~8000)
int n , tmp, sum=0;
cin >> n;
vector <int> v(n);
for (int i = 0; i < n; i++) {
cin >> tmp;
arr[tmp + 4000] ++ ; // μ΅λΉκ°μ μν λ³μ
v[i] = tmp;
sum += tmp; //μ°μ νκ· μ μν sum
}
sort(v.begin(), v.end());
int avg = round((float)sum / n); //μ°μ νκ·
int mid = v[v.size() / 2]; // μ€μκ°
int range = v[n - 1] - v[0]; // μ΅λκ°κ³Ό μ΅μκ°μ μ°¨μ΄
int max = 0;
int maxIndex = 0;
for (int i = 0; i < 8001; i++) {
if (max < arr[i]) {
max = arr[i];
maxIndex = i;
}
}
for (int i = maxIndex + 1; i < 8001; i++) {
if (max == arr[i]) { // μ΅λΉκ°μ΄ μ¬λ¬κ°λΌλ©΄
maxIndex = i; // λλ²μ§Έλ‘ μμκ°
break;
}
}
cout << avg << "\n" << mid << "\n" << maxIndex-4000 << "\n" << range;
}
μ½λλ₯Ό μ΄ν΄λ³΄λ©΄ ,
λ¨Όμ max μ maxIndexλ₯Ό μ΄μ©ν΄ μ΅λΉκ°μ ꡬνλ€. μ΅λΉκ°μ΄ μ¬λ¬κ°μΌ κ²½μ°λ₯Ό μκ°ν΄ forλ¬Έμ νλ² λ λλ¦¬κ³ maxindexλ₯Ό λ€μ μ§μ ν΄μ€λ€. μ΄λ λλ²μ§Έ forλ¬Έμ iκ°μ΄ maxIndex + 1 λ‘ μμνλ κ²½μ°λ μ΅λΉκ°μ΄ κ°μ μ μ€ λλ²μ§Έλ‘ μμ μλ₯Ό ꡬνκΈ° μν΄μμ΄λ€. (첫λ²μ§Έλ‘ μμ μλ maxIndex)
λ§μ§λ§μΌλ‘ μ΅λΉκ°μ μΆλ ₯ν λ, -4000μ ν΄μ μΆλ ₯ν΄μ£Όλ©΄ μ¬λ°λ₯Έ κ°μ΄ λμ€κ² λλ€.
index 0 μ΄ μ«μ -4000μ μλ―ΈνκΈ° λλ¬Έμ.