• toc {:toc}

image

๋ฌธ์ œ ํ™•์ธํ•˜๊ธฐ

ํ’€์ด

์ตœ๋นˆ๊ฐ’์ด ๋ฉ”์ธ์ธ ๋ฌธ์ œ์˜€๋‹ค. ์ตœ๋นˆ๊ฐ’์„ ์นด์šดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด freq_ch ๋ฐฐ์—ด์„ ํ†ตํ•ด ๋นˆ๋„๋ฅผ ์ฒดํฌํ–ˆ๋‹ค. ์ •๋ ฌ์„ ํ•œ ์ƒํƒœ์—์„œ ์ตœ๋นˆ๊ฐ’์„ ์„ ํƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์ตœ๋นˆ๊ฐ’ ๋‚ด์—์„œ ๋‘ ๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ equal == 0 && val != max_idx ๋ฅผ ํ†ตํ•ด์„œ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

#include <bits/stdc++.h>
using namespace std;
 
int num[500005];
int freq_ck[8005] = {0,};
 
int main(){
    int N, val, mid, range, idx, offset = 4000;
    int avg, sum = 0;
    int low = 9999, high = -9999, max_idx= 4003, equal = 0;
 
    cin >> N;
 
    for(int i = 0; i < N; i++){
        cin >> val;
        // ์‚ฐ์ˆ  ํ‰๊ท 
        sum += val;
 
        // ์ค‘์•™๊ฐ’
        num[i] = val;
        freq_ck[val+offset]++;
    }
 
    sort(num, num+N);
 
    for(int i = 0; i < N; i++){
        // ์ตœ๋นˆ๊ฐ’
        val = num[i];
        idx = val + offset;
 
        if (freq_ck[idx] > freq_ck[max_idx+offset]) {
            max_idx = val;
            equal = 0;
        }
        else if (freq_ck[idx] == freq_ck[max_idx+offset]){
            if(equal == 0 && val != max_idx){
                equal = 1;
                max_idx = val;
            }
        }
        // ๋ฒ”์œ„
        if (low > val) low = val;
        if (high < val) high = val;
    }
    
 
    avg = round((float)sum / N);
    
    cout << avg << '\n';
 
    cout << num[(N-1)/2] << '\n';
    
    cout << max_idx << '\n';
 
    range = high-low;
    cout << range << '\n';
 
    return 0;
}