😈 알고리즘/🍃 인프런 #1
🙏 25. 석차 구하기
Buᐢ༝ᐢy
2023. 3. 15. 18:00
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 - 인프런 | 강의
모든 문제에 대한 저작권은 위 강의에 있습니다.
문제
N명의 학생의 수학점수가 입력되면 각 학생의 석차를 입력된 순서대로 출력하는 프로그램을 작성하세요.
입력 설명
첫 줄에 N(1<=N<=100)이 입력되고, 두 번째 줄에 수학점수를 의미하는 N개의 정수가 입력된다. 같은 점수가 입력될 경우 높은 석차로 동일 처리한다. 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다. 점수는 100점 만점이다.
출력 설명
첫 줄에 입력된 순서대로 석차를 출력한다.
입력 예제 1
5
90 85 92 95 90
출력 예제 1
3 5 2 1 3
제출 코드
2023년 2월 11일
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> Ranking(vector<int> students)
{
vector<int> store = students;
int length = students.size();
vector<int> result(length);
int count = 0;
sort(store.begin(), store.end(), greater<int>());
for (int i = 0; i < length; i++)
{
for (int j = 0; j < length; j++)
{
if (students[i] == store[j])
{
result[i] = j + 1;
break;
}
}
}
return result;
}
int main()
{
int N = 0;
cin >> N;
vector<int> students;
for (int i = 0; i < N; i++)
{
int temp = 0;
cin >> temp;
students.push_back(temp);
}
vector<int> result = Ranking(students);
for (int i = 0; i < N; i++)
{
cout << result[i] << ' ';
}
return 0;
}
풀이
for(int i = 0; i <= n; i++)
{
for(int j = 0; j <= n; j++)
{
if(a[j] > a[i])
b[i]++;
}
}
**sort**를 하지 않아도 위 코드처럼 **이중 for문**을 사용해서 석차를 구할 수 있다.