😈 알고리즘/🍃 인프런 #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문**을 사용해서 석차를 구할 수 있다.