728x90
[문제]
학생 수를 입력받고, 학생 수 만큼 점수를 입력받아 석차를 출력한다.
이때, 동점일 경우 같은 석차로 처리하며 다음 등수는 + 같은 석차를 받은 학생 수 이다.
[입력예제]
5
90 85 92 95 90
[출력예제]
3 5 2 1 3
총 5명의 학생의 점수를 입력받았으며, 가장 높은 점수는 95점으로 네번째 학생 석차는 1등이다.
그 다음으로는 92점으로 세번째 학생은 2등, 90점을 받은 학생은 둘이므로 첫번째 학생과 다섯번째 학생은 공동 3등.
85점은 최하점으로 점수상에서는 네번째지만 3등 석차가 2명이었으므로 두번째 학생은 5등이 되었다.
[코드]
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, const char * argv[]) {
int n;
//1
cin >> n;
vector<int> student(n);
vector<int> rank(n);
//2
for(int i=0; i<n; i++) {
rank[i] = 1;
cin >> student[i];
}
//3
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(student[i]<student[j]) rank[i]++;
}
}
//4
for(int i=0; i<n; i++) cout << rank[i] << " ";
return 0;
}
[설명]
- 학생 수를 입력받는다. (n)
- n만큼 반복하여 모든 석차를 1등으로 초기화 시키며, 학생들의 성적(student[i])을 입력받는다.
- 이중 for문을 통해 i번째 학생이 j번째 학생보다 점수가 낮으면 i번째 학생의 석차를 올려준다.
- n만큼 반복하며 석차를 출력한다.
[실행결과]
728x90
반응형
'문제풀이 > C++' 카테고리의 다른 글
[C++] N!의 표현법 (0) | 2021.01.17 |
---|---|
[C++] 마라톤 (0) | 2021.01.16 |
[C++] Jolly Jumpers (0) | 2021.01.11 |
[C++] 연속 부분 증가수열 (0) | 2021.01.10 |
[C++] 온도의 최대값 (0) | 2021.01.10 |