반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구현
- 큐
- 해시를사용한집합과맵
- 프로그래머스sql
- 논문리뷰
- 백준알고리즘
- 문자열
- 그리디알고리즘
- 논문구현
- 소수판정
- 그리디
- 수학
- 이분탐색
- 자료구조
- 백준
- 프로그래머스코딩테스트
- MySQL
- 다이나믹프로그래밍
- C
- 프로그래머스연습문제
- 프로그래머스
- 이진탐색
- C언어
- 브루트포스알고리즘
- SQL
- 정렬
- C++
- 사칙연산
- Image Classification
- 정수론
Archives
- Today
- Total
초보 개발자의 이야기, 릿허브
[C++] 백준 10825번 국영수 본문
728x90
반응형
1. 문제이해
https://www.acmicpc.net/problem/10825
1. 국어 점수가 감소하는 순서로
2. 국어 점수가 같으면 영어 점수가 증가하는 순서로
3. 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
4. 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로
다음과 같은 순서로 학생의 이름을 출력하는 프로그램을 작성하는 것이 목표이다.
2. 문제풀이
어렵지 않은 단순 정렬문제이다.
C++에 내장된 sort 함수를 이용하되, sort(시작 인덱스, 마지막 인덱스, 조건)에서
조건에 해당하는 부분에 함수를 구현해 인자로 넘겨주기만 하면 된다.
자세한 내용은 아래 코드와 함께 보자.
3. 소스코드
#include <iostream>
#include <algorithm>
using namespace std;
// 학생 클래스
class student {
public:
// 이름, 국어, 영어, 수학 성적
string name;
int kor;
int eng;
int math;
};
// 정렬을 위한 비교 함수
bool cmp(student a, student b) {
if (a.kor == b.kor) {
if (a.eng == b.eng) {
if (a.math == b.math) {
return a.name < b.name;
}
else {
return a.math > b.math;
}
}
else {
return a.eng < b.eng;
}
}
return a.kor > b.kor;
}
student* s = new student[100000];
int main() {
cin.tie(0);
ios::sync_with_stdio(0);
int N; // 학생 수
cin >> N;
for (int i = 0; i < N; i++) {
cin >> s[i].name >> s[i].kor >> s[i].eng >> s[i].math;
}
// 정렬
sort(s, s + N, cmp);
for (int i = 0; i < N; i++) {
// endl 사용시 시간초과 발생
cout << s[i].name << "\n";
}
return 0;
}
먼저, 학생의 이름, 국어, 영어, 수학 성적을 입력받고 저장하기 위해 class를 사용했다.
student라는 class를 정의하고, 해당 class를 이용해 성적을 입력받았다.
입력받은 이름과 성적, sort 함수를 이용해 정렬을 수행한다.
단, 여기서 cmp 함수가 중요한데, 해당 함수를 이용해 문제에서 주어진 4가지 조건을 구현했다.
bool cmp 함수는 문제에서 주어진 4가지 조건을 담은 함수이다.
국어, 영어, 수학 성적, 마지막으로 이름에 따라 정렬하는 순서를 넘겨준다.
해당 함수를 이용해 정렬을 한 뒤, main 함수에서는 정렬된 순서의 이름만 출력해주었다.
728x90
반응형
'코딩테스트 > 📗 백준 (BOJ)' 카테고리의 다른 글
[C++] 백준 1764번 듣보잡 (2) | 2022.08.26 |
---|---|
[C++] 백준 2960번 에라토스테네스의 체 (0) | 2022.08.11 |
[C++] 백준 2108번 통계학 (0) | 2022.08.09 |
[C++] 백준 1359번 복권 (2) | 2022.07.06 |
[C++] 백준 9625번 BABBA (0) | 2022.04.01 |