코딩하기 좋은날
백준 10825 국영수 본문
반응형
문제와 채점은 위 사이트에서 확인 하실 수 있습니다.
이 문제는 이름 국어 영어 수학 점수를 입력받은 뒤 주어진 조건
- 국어 점수가 감소하는 순서로
- 국어 점수가 같으면 영어 점수가 증가하는 순서로
- 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
- 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)
으로 정렬을 해주어야 합니다. 우선 입력 받아야 할 값의 종류가 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 |