본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Grading Students

https://www.hackerrank.com/challenges/grading/problem

 

Grading Students | HackerRank

Round student grades according to Sam's rules.

www.hackerrank.com

 

<문제>

 

문제: 학생들의 점수를 grading하는 문제이다. 만약 결과가 40점 미만이면 그 점수 그대로 grading하지만, 40점 이상일 때, 해당 점수보다 크면서 가장 가까운 5의 배수의 값이 점수와 3점 미만 차이나면 5의 배수 값으로 grading하고, 3점 이상 차이나면 원래의 점수 그대로 grading한다.

input: 먼저 입력받을 총 학생의 수 n을 입력한 뒤, 차례대로 학생의 점수를 입력해 grades[i]에 저장한다.

output: 학생의 grades를 높은 순서대로 출력한다.

 

<코드> gradingStudents()함수 구현

int* gradingStudents(int grades_count, int* grades, int* result_count) {
    *result_count = grades_count;
    for(int i=0; i<grades_count; i++){
        if(grades[i]%5 > 2 && grades[i] >= 38){
            grades[i] += (5-grades[i]%5);
        }    
    }
    return grades;
}

 

<코드 풀이>

grades_count에 전달받은 수만큼 for문을 반복하고, if문을 통해 점수를 바꾸었다.

점수를 5로 나누었을 때 나머지가 2보다 크다면, 점수보다 크면서 가장 가까운 5의 배수와의 차이가 3 미만이고,  또한 점수가 38점 이상이라면 가장 가까운 5의 배수로 점수를 바꾸어서 문제를 풀 수 있었다.

 

 

<결과>