점수가 0점부터 100점까지라고 볼때

배열을 점수 갯수만큼 만들어주고

N명 입력을 받기전에 클리어한다.


int scoreHistogram[100 + 1];

for(int i = 0; i < 101; ++i) scoreHistogram[i] = 0;


점수를 N 명 입력받을때, scoreHistogram의 각 점수별 카운트를 증가시킨다.

아래를 N 번 순회...


int score;

scanf("%d", &score);

scoreHistogram[score]++;


N명을 다 입력 받은 후, 3번째를 찾고 싶으면 배열안에 카운트 된 값을 누적해 비교한다.


int order = 3;

int sum = 0;

int position;

for(position = 100; position >= 0 && (sum += scoreHistogram[position]) < order; --position);


루프를 빠져나왔을때의 position 이 곧 세번째의 점수, scoreHistogram[position] 값이 곧 빈도수가 된다.