[코테]/[GroomEdu]
[COS PRO 2급] 3차 2번_장학생 수 구하기 (C/C++)
Sky_
2021. 5. 13. 22:50
주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int func_a(int current_grade[], int last_grade[], int rank[], int arr_length, int max_diff_grade) {
int count = 0;
for (int i = 0; i < arr_length; i++) {
if (current_grade[i] >= 80 && rank[i] <= arr_length / 10)
count++;
else if (current_grade[i] >= 80 && rank[i] == 1)
count++;
else if (max_diff_grade == current_grade[i] - last_grade[i])
count++;
}
return count;
}
int* func_b(int current_grade[], int arr_length) {
int* rank = (int*)malloc(sizeof(int) * arr_length);
for (int i = 0; i < arr_length; i++)
rank[i] = 1;
for (int i = 0; i < arr_length; i++)
for (int j = 0; j < arr_length; j++)
if (current_grade[i] < current_grade[j])
rank[i]++;
return rank;
}
int func_c(int current_grade[], int last_grade[], int arr_length) {
int max_diff_grade = 1;
for (int i = 0; i < arr_length; i++) {
if (max_diff_grade < current_grade[i] - last_grade[i])
max_diff_grade = current_grade[i] - last_grade[i];
}
return max_diff_grade;
}
int solution(int current_grade[], int current_grade_len, int last_grade[], int last_grade_len) {
int arr_length = current_grade_len;
int* rank = func_b(current_grade, arr_length);
int max_diff_grade = func_c(current_grade, last_grade, arr_length);
int answer = func_a(current_grade, last_grade, rank, arr_length, max_diff_grade);
return answer;
}
int main() {
int current_grade[6] = { 70, 100, 70, 80, 50, 95 };
int current_grade_len = 6;
int last_grade[6] = { 35, 65, 80, 50, 20, 60 };
int last_grade_len = 6;
int ret = solution(current_grade, current_grade_len, last_grade, last_grade_len);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
완성 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int func_a(int current_grade[], int last_grade[], int rank[], int arr_length, int max_diff_grade) {
int count = 0;
for (int i = 0; i < arr_length; i++) {
if (current_grade[i] >= 80 && rank[i] <= arr_length / 10)
count++;
else if (current_grade[i] >= 80 && rank[i] == 1)
count++;
else if (max_diff_grade == current_grade[i] - last_grade[i])
count++;
}
return count;
}
int* func_b(int current_grade[], int arr_length) {
int* rank = (int*)malloc(sizeof(int) * arr_length);
for (int i = 0; i < arr_length; i++)
rank[i] = 1;
for (int i = 0; i < arr_length; i++)
for (int j = 0; j < arr_length; j++)
if (current_grade[i] < current_grade[j])
rank[i]++;
return rank;
}
int func_c(int current_grade[], int last_grade[], int arr_length) {
int max_diff_grade = 1;
for (int i = 0; i < arr_length; i++) {
if (max_diff_grade < current_grade[i] - last_grade[i])
max_diff_grade = current_grade[i] - last_grade[i];
}
return max_diff_grade;
}
int solution(int current_grade[], int current_grade_len, int last_grade[], int last_grade_len) {
int arr_length = current_grade_len;
int* rank = func_b(current_grade, arr_length);
int max_diff_grade = func_c(current_grade, last_grade, arr_length);
int answer = func_a(current_grade, last_grade, rank, arr_length, max_diff_grade);
return answer;
}
int main() {
int current_grade[6] = { 70, 100, 70, 80, 50, 95 };
int current_grade_len = 6;
int last_grade[6] = { 35, 65, 80, 50, 20, 60 };
int last_grade_len = 6;
int ret = solution(current_grade, current_grade_len, last_grade, last_grade_len);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
결과
current_grade | current_grade_len | ast_grade | ast_grade_len | return |
[70, 100, 70, 80, 50, 95] | 6 | [35, 65, 80, 50, 20, 60] | 6 | 3 |
goorm
구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.
www.goorm.io