-
[백준/BOJ] 10825번 국영수 (C++)알고리즘 문제풀이/백준 2021. 1. 10. 22:02
정렬 유형의 문제입니다.
한 벡터에 많은 입력값을 받아야하는데, 서로 타입도 달라서 따로 Info라는 구조체를 만들어줬습니다. 그 후 입력값을 벡터에 저장하고, cmp함수를 조건에 맞게 구현한 후 정렬해주었습니다.
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct Info { string name; int korean, english, math; }; int cmp(Info a, Info b) { if(a.korean == b.korean) { if(a.english == b.english) { if(a.math == b.math) return a.name < b.name; // 이름 오름차순 return a.math > b.math; // 수학 내림차순 } return a.english < b.english; // 영어 오름차순 } return a.korean > b.korean; // 국어 내림차순 } int main(void) { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<Info> v; for(int i = 0; i < n; i++) { string name; int korean, english, math; cin >> name; cin >> korean >> english >> math; v.push_back({name, korean, english, math}); } sort(v.begin(), v.end(), cmp); for(int i = 0; i < n; i++) { cout << v[i].name << "\n"; } }
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준/BOJ] 16929번 Two Dots (0) 2021.01.11 [백준/BOJ] 2910번 빈도 정렬 (C++) (0) 2021.01.11 [백준/BOJ] 11656번 접미사 배열 (C++) (0) 2021.01.10 [백준/BOJ] 5648번 역원소 정렬 (C++) (0) 2021.01.10 [백준/BOJ] 11652번 카드 (C++) (0) 2021.01.10