cospro 7번 문제
오른 점수와 떨어진 점수 구하기
문제 설명
중간시험 점수와 기말시험 점수가 있다. 이를 바탕으로 점수가 가장 많이 오른 학생의 점수 차이와 가장 많이 떨어진 학생의 점수 차이를 구하려 한다. 이를 위해 다음과 같이 프로그램 구조를 작성했다.
1. 각 학생에 대하여 대하여 기말고사 점수에서 중간고사 점수를 뺀 값의 최댓값을 구한다.
2. 각 학생에 대하여 기말고사 점수에서 중간고사 점수를 뺀 값의 최솟값을 구한다.
3. 1번과 2번 과정에서 구한 점수를 배열에 담아 return 한다.
학번순으로 중간시험 점수를 담은 배열 mid_scores, mid_scores의 길이 mid_scores_len, 학번순으로 기말시험 점수를 담은 배열 final_scores, final_scores의 길이 final_scores_len이 solution 함수의 매개변수로 주어진다.
매개변수 설명
학번순으로 중간시험 점수를 담은 배열 mid_scores, mid_scores의 길이 mid_scores_len, 학번순으로 기말시험 점수를 담은 배열 final_scores, final_scores의 길이 final_scores_len이 solution 함수의 매개변수로 주어진다.
시험 점수는 100 이하인 자연수이다.
mid_scores_len과 final_scores_len은 5 이상 50 이하인 자연수이다.
mid_scores_len과 final_scores_len은 같다.
return 값 설명
성적이 가장 많이 오른 학생의 점수 차이를 배열 첫 번째 원소로 하고, 성적이 가장 많이 떨어진 학생의 점수 차이를 두번째로 담은 배열을 return gksek.
점수가 오른 학생이 없으면 첫 번째 원소에 0을 넣고, 점수가 떨어진 학생이 없으면 두 번째 원소에 0을 넣도록 한다.
예시
예시 설명
코드 설명
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int func_a(int scores1[], int scores2[], int scores_len) {
int answer = 0;
for(int i=0; i<scores_len; i++) //성적이 가장 많이 오른 학생의 점수 차이
if (answer < scores2[i] - scores1[i])
answer = scores2[i] - scores1[i];
return answer;
}
int func_b(int scores1[], int scores2[], int scores_len) {
int answer = 0;
for(int i=0; i<scores_len; i++) //성적이 가장 많이 떨어진 학생의 점수 차이
if (answer > scores1[i] - scores2[i])
answer = scores1[i] - scores2[i];
return answer;
}
int* solution(int mid_scores[], int mid_scores_len, int final_scores[], int final_scores_len) {
int *answer = (int*)malloc(sizeof(int) * 2);
answer[0] = func_a(mid_scores, final_scores, mid_scores_len);
answer[1] = func_b(final_scores, mid_scores, mid_scores_len); //점수 차이 구하기
return answer;
}
int main() {
int mid_scores[] = {20, 50, 40};
int final_scores[] = {10, 50, 70};
int* ret = solution(mid_scores, 3, final_scores, 3);
printf("solution 함수의 반환 값은 [");
for(int i = 0; i < 2; i++){
if (i != 0) printf(", ");
printf("%d", ret[i]);
}
printf("] 입니다.\n");
}
점수 차이를 구할 때는 큰 수에서 작은 수를 뺀다.
'cospro2급 > cospro_4차' 카테고리의 다른 글
2021-05-22 (0) | 2021.05.22 |
---|---|
2021-05-21 (0) | 2021.05.21 |
2021-05-20 (0) | 2021.05.20 |
2021-05-20 (0) | 2021.05.20 |
201-05-19 (0) | 2021.05.19 |