-
백준 2822번 : 점수 계산(C 언어)c c++ 언어 공부 2023. 8. 23. 10:44
https://www.acmicpc.net/problem/2822
2822번: 점수 계산
8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문
www.acmicpc.net
Code:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include <stdio.h>#include <stdlib.h>typedef struct {int num;int count;}arr;int compare(const void * a, const void * b){arr *A = (arr*) a;arr* B = (arr*)b;if (A->count > B->count) return 1;else if (A->count < B->count) return -1;else return 0;}int compare2(const void* a, const void* b){if (*(int*)a > *(int*)b) return 1;else if (*(int*)a > *(int*)b) return -1;else return 0;}int main() {arr score[9] = { 0, };int sum = 0;int result[6] = { 0, };for (int i = 0; i < 8; i++){scanf("%d", &score[i].count);score[i].num = i + 1;}qsort(score, 8, sizeof(arr), compare);for (int i = 3; i < 8; i++){result[i - 3] = score[i].num;sum += score[i].count;}qsort(result, 5, sizeof(int), compare2);printf("%d\n", sum);for (int i = 0; i < 5; i++){printf("%d ", result[i]);}}cs 문제 설명: 상근이는 참가자의 8개 문제에 대한 점수를 계산해야 합니다. 각 문제의 점수는 시작한 시간과 난이도에 따라 결정됩니다. 상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있어서, 이를 대신 계산해야 합니다. 참가자의 총 점수는 가장 높은 점수 5개의 합입니다.
코드 설명:
- 구조체 arr 정의: 문제 번호와 점수를 저장하는 구조체를 정의합니다.
- 비교 함수 compare 정의: qsort 함수로 사용할 점수를 기준으로 배열을 정렬하는 함수를 정의합니다.
- 두 번째 비교 함수 compare2 정의: 두 번째 qsort 함수로 사용할 문제 번호를 정렬하는 함수를 정의합니다.
- 점수 입력과 문제 번호 초기화: 점수와 문제 번호를 입력하고 배열을 초기화합니다.
- 점수를 기준으로 배열 정렬: compare 함수를 사용하여 배열을 점수에 따라 정렬합니다.
- 가장 높은 5개 점수 선택 및 문제 번호 저장: 정렬된 배열에서 가장 높은 5개의 점수를 선택하고 해당 문제 번호를 저장합니다.
- 문제 번호 정렬 및 출력: compare2 함수를 사용하여 선택된 문제 번호를 정렬하고, 총 점수와 정렬된 문제 번호를 출력합니다.
이렇게 작성된 코드는 주어진 문제를 해결하고 참가자의 총점과 최종 점수에 포함된 문제 번호를 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 2485번 : 가로수 (C 언어) (0) 2023.08.24 백준 1302번 : 베스트셀러 (C 언어) (0) 2023.08.23 백준 1343번 : 폴리오미노(C 언어) (0) 2023.08.22 백준 11557번 : Yangjojang of The Year(C 언어) (0) 2023.08.22 백준 1233번 : 주사위 (0) 2023.08.21