programming

해커랭크 Grading Students 퀴즈 파이썬 풀이 해설


by Kitle · 2020. 08. 18.



오늘은 해커랭크 퀴즈중 해커랭크 Grading Students 를 풀어보겠습니다.

문제 요약

HackerLand University has the following grading policy:

Every student receives a grade in the inclusive range from 0 to 100.

Any less than  40 is a failing grade.


HackerLand University에는 다음과 같은 등급 정책이 있습니다.

모든 학생은 0부터 100사이의 점수를 받습니다.

40 미만은 낙제 등급입니다.


점수는 현재 점수의 다음 5배수와의 차가 3보다 작으면 올려 줍니다. 3보다 작은 값이면 변화가 없습니다. 올린 값이 40미만이라면 올려주지 않습니다.


풀이

#!/bin/python3

import math
import os
import random
import re
import sys
#
# Complete the 'gradingStudents' function below.
#
# The function is expected to return an INTEGER_ARRAY.
# The function accepts INTEGER_ARRAY grades as parameter.
#


def gradingStudents(grades):
result = []
for grade in grades:
if (grade + 5 - grade % 5) - grade < 3:
if (grade + 5 - grade % 5) >= 40:
result.append(grade + 5 - grade % 5)
else:
result.append(grade)
else:
result.append(grade)
return result


if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')

grades_count = int(input().strip())

grades = []

for _ in range(grades_count):
grades_item = int(input().strip())
grades.append(grades_item)

result = gradingStudents(grades)

fptr.write('\n'.join(map(str, result)))
fptr.write('\n')

fptr.close()


솔루션 및 해설

딱히 솔루션 및 해설을 쓸만한게 사실 없습니다. ^^; 주어진 문제에 이미 다양한 조건이 잘 나와 있어서, 조건대로만 풀면 되겠습니다.

현재 입력된 점수보다 5배수 큰 수를 어떻게 만들 것인가 입니다. 여러가지 방법이 있겠지만 여기서는 수동적으로 5로 나머지를 활용하였습니다. 37 의 경우는 5로 나누면 나머지가 2가 되겠죠? 따라서 현재의 수에서 5를 더합니다.  5 + 37 이면 42입니다. 여기에 나머지였던 2를 빼주면 40이 되므로 현재 수보다 큰 5배수를 만들 수 있습니다.

5배수에서 현재 값을 뺀 값이 3보다 작으면 값을 올려주기로 했으므로 있는 그대로 조건식을 걸어 계산하여 결과에 따라 올린 값을 넣을지, 현재 값을 넣을지 하면 됩니다.

단, 예외처리는 하나 있습니다. 올려준 값이 40 미만이라면, 올리지 않은 원 값을 출력해야 합니다. 34 같은 경우는 올려도 35가 될테니 최종 결과가 40 미만이라면 원래 값을 추가하는 추가적인 예외처리가 필요하겠습니다.

쉬운 퀴즈의 경우는 문제속에 조건이 충실히 있으니, 이부분을 잘 활용하시어 문제 푸는데 큰 문제가 없다면 바로 코드를 짜도 어렵지 않을것 같습니다.

이상으로 풀이를 마칩니다.

퀴즈 출처로 이동 : 해커랭크 퀴즈로 이동

풀이 깃허브에서 보기 : 깃허브로 이동