티스토리 뷰

Algorithm/BOJ

백준 10825번 C++

poopooreum 2023. 9. 10. 11:56
반응형
백준 10825번 국영수

https://www.acmicpc.net/problem/10825

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net



정답 코드

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>

using namespace std;

struct student {	
	string name;	
	int ko;	
	int en;	
	int ma;	
};

bool cmp(student a, student b)	
{
	if (a.ko == b.ko)	
	{
		if (a.en == b.en)	
		{
			if (a.ma == b.ma)	
			{
				return a.name < b.name;	
			}

			return a.ma > b.ma;	
		}

		return a.en < b.en;	
	}
	return a.ko > b.ko;	
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n;
	cin >> n;	

	vector<student>v(n);

	for (int i = 0; i < n; i++)	
	{
		cin >> v[i].name >> v[i].ko >> v[i].en >> v[i].ma;
	}

	sort(v.begin(), v.end(), cmp);	

	for (int i = 0; i < n; i++)	
		cout << v[i].name<<'\n';

	return 0;
}

문제 풀이

먼저 입력값들을 구조체로 만들어서 비교하기 쉽게 만들었습니다. 구조체 자료형의 벡터를 만들어서 입력을 받은 후 sort함수로 정렬을 하였습니다. 이때 cmp함수를 변경해주어서 문제에 맞게 if문과 return적절하게 활용하였습니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 10828번 C++  (0) 2023.09.10
[C/C++] 백준 10826번 - 피보나치 수4  (0) 2023.09.10
백준 10818번 C++  (0) 2023.09.10
백준 10816번 C++  (0) 2023.09.08
백준 10815번 C++  (0) 2023.09.08
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함