https://www.acmicpc.net/problem/2108
๋ฌธ์
์๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ํต๊ณํ์์ ์๋นํ ์ค์ํ ์ผ์ด๋ค. ํต๊ณํ์์ N๊ฐ์ ์๋ฅผ ๋ํํ๋ ๊ธฐ๋ณธ ํต๊ณ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค. ๋จ, N์ ํ์๋ผ๊ณ ๊ฐ์ ํ์.
- ์ฐ์ ํ๊ท : N๊ฐ์ ์๋ค์ ํฉ์ N์ผ๋ก ๋๋ ๊ฐ
- ์ค์๊ฐ : N๊ฐ์ ์๋ค์ ์ฆ๊ฐํ๋ ์์๋ก ๋์ดํ์ ๊ฒฝ์ฐ ๊ทธ ์ค์์ ์์นํ๋ ๊ฐ
- ์ต๋น๊ฐ : N๊ฐ์ ์๋ค ์ค ๊ฐ์ฅ ๋ง์ด ๋ํ๋๋ ๊ฐ
- ๋ฒ์ : N๊ฐ์ ์๋ค ์ค ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐจ์ด
N๊ฐ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ๋ค ๊ฐ์ง ๊ธฐ๋ณธ ํต๊ณ๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋จ, N์ ํ์์ด๋ค. ๊ทธ ๋ค์ N๊ฐ์ ์ค์๋ ์ ์๋ค์ด ์ฃผ์ด์ง๋ค. ์ ๋ ฅ๋๋ ์ ์์ ์ ๋๊ฐ์ 4,000์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ฐ์ ํ๊ท ์ ์ถ๋ ฅํ๋ค. ์์์ ์ดํ ์ฒซ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํ ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋์งธ ์ค์๋ ์ค์๊ฐ์ ์ถ๋ ฅํ๋ค.
์ ์งธ ์ค์๋ ์ต๋น๊ฐ์ ์ถ๋ ฅํ๋ค. ์ฌ๋ฌ ๊ฐ ์์ ๋์๋ ์ต๋น๊ฐ ์ค ๋ ๋ฒ์งธ๋ก ์์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ท์งธ ์ค์๋ ๋ฒ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์ฐ์ ํ๊ท ์ ๊ฒฝ์ฐ ์์ 4์ ๋์จ๋๋ก -0๋ง ์ฃผ์ํ๋ฉด ๋๋ค.
๊ทธ ์ธ ๋ค๋ฅธ๋ถ๋ถ์ ๋ฌด๋ํ์ง๋ง ์ต๋น๊ฐ์ ๊ตฌํ๋ ๋ก์ง์ด ๊ท์ฐฎ์๋ค.
๋์ ๊ฒฝ์ฐ, ๋น๋์๋ฅผ ๋ด๋ ๋ฒกํฐ(๋ฐฐ์ด) f๋ฅผ ๋ง๋ค๊ณ
(์ด๋, ์์๋ ์ ์ฅํ ์ ์๋๋ก ๋ฒ์๋ 8000์ผ๋ก ํ๊ณ ์ธ๋ฑ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก 4000์ฉ ๋ํด์ฃผ์๋ค -> ๋ฒ์ -4000~4000 => 0~8000)
๊ทธ๋ฆฌ๊ณ max_element๋ฅผ ์ด์ฉํ์ฌ ์ต๋น๊ฐ์ ์ธ๋ฑ์ค ffi์ ์ต๋น๊ฐ์ ๊ตฌํ๋ค ff
์ด์ ff๋ฅผ ์ ์ธํ ์ต๋น๊ฐ์ ๊ตฌํ๋ค (f[ffi]=0์ผ๋ก ํด์ค ๋ค ๋ค์ max_element๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค)
๋๋ฒ์จฐ ์ต๋น๊ฐ fff์ ๊ทธ์ ์ธ๋ฑ์ค fffi๊ฐ ๋ง๋ค์ด์ง๋ค
์ด์ ff์ fff๋ฅผ ๋น๊ตํ์ฌ ๊ฐ๋ค๋ฉด fffi๋ฅผ, ์๋๋ผ๋ฉด ffi๋ฅผ ๋ฐํํ๋๋ก ํ๋ฉด ๋
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
int n, input;
cin >> n;
vector<int> v;
vector<int> f(8001, 0);
double sum = 0;
for(int i=0; i<n; i++) {
cin >> input;
v.push_back(input);
f[input+4000]++;
sum += input;
}
sort(v.begin(), v.end());
// ์ฐ์ ํ๊ท
int avg = round(sum/n);
avg = avg == -0 ? 0 : avg;
// ์ต๋น๊ฐ
int ffi = max_element(f.begin(), f.end()) - f.begin();
int ff = f[ffi];
f[ffi] = 0;
int fffi = max_element(f.begin(), f.end()) - f.begin();
int fff = f[fffi];
int frequent = ff == fff ? fffi : ffi;
cout << avg << "\n" << v[n/2] << "\n" << frequent - 4000 << "\n" << v[n-1]-v[0];
return 0;
}
'๐๏ธ ICPC Sinchon > Basic Math' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 9421๋ฒ: ์์์๊ทผ์ (0) | 2023.06.02 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2168๋ฒ: ํ์ผ ์์ ๋๊ฐ์ (0) | 2023.05.31 |
[BOJ][C++] ๋ฐฑ์ค 2981๋ฒ: ๊ฒ๋ฌธ (0) | 2023.01.24 |
[BOJ][C++] ๋ฐฑ์ค 17087๋ฒ: ์จ๋ฐ๊ผญ์ง 6 (0) | 2023.01.24 |
[BOJ][C++] ๋ฐฑ์ค 20003๋ฒ: ๊ฑฐ์ค๋ฆ๋์ด ์ซ์ด์ (0) | 2023.01.24 |