반응형
Notice
Recent Posts
Recent Comments
Link
«   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
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 10825 국영수 본문

백준(Baekjoon) 문제

백준 10825 국영수

huiung 2019. 1. 20. 11:48
반응형

문제와 채점은 위 사이트에서 확인 하실 수 있습니다.

 

이 문제는 이름 국어 영어 수학 점수를 입력받은 뒤 주어진 조건

 

  1. 국어 점수가 감소하는 순서로
  2. 국어 점수가 같으면 영어 점수가 증가하는 순서로
  3. 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
  4. 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)
 

으로 정렬을 해주어야 합니다. 우선 입력 받아야 할 값의 종류가 4가지 이므로 구조체를 정의해서 입력을 받았고,

그 구조체를 저러한 4가지 조건에 맞게 정렬 할 수 있도록 cmp 라는 함수를 만들어 정렬 조건을 정의 하였습니다.

그후 sort 함수에 조건을 넣어주면 해결이 되는 문제입니다.

 

 

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

typedef struct student { 
	string name;
	int language;
	int English;
	int math;
}student;


bool cmp(student s1, student s2) { //정렬 조건 
	if(s1.language == s2.language) {
		if(s1.English == s2.English) {
			if(s1.math == s2.math)
				return s1.name < s2.name;
			else
				return s1.math > s2.math;
			}
		else
			return s1.English < s2.English;
		}
	else
		return s1.language > s2.language;
}





int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int N;
	cin >> N;
	student s[N];
	
	for(int i = 0; i < N; i++) {
		cin >> s[i].name >> s[i].language >> s[i].English >> s[i].math;
		
	}
	
	sort(s, s+N, cmp); //정렬 
	
	for(int i = 0; i < N; i++)
		cout<<s[i].name<<'\n';
	
	return 0;
}
반응형

'백준(Baekjoon) 문제' 카테고리의 다른 글

백준 3047 ABC  (0) 2019.01.20
백준 1205 등수 구하기  (0) 2019.01.20
백준 1181 단어 정렬  (0) 2019.01.20
백준 1026 보물  (0) 2019.01.19
백준 4949 균형잡힌 세상  (0) 2019.01.19