문제 요약
- 모든 학생들은 0에서 100까지의 등급을 받는다.
- 40 미만의 점수는 실패한 등급이다.
샘은 대학 교수이며 아래와 같이 등급을 매긴다.
- 등급간의 차이는 5씩 차이가 나며 등급과 3미만의 차이가 나면 다음 등급으로 반올림 한다.
- 만약 38 미만등급이면 결과가 실패한 등급이므로 반올림 하지 않는다.
- 예를들어 84점이면 85로 반올림 되고 29점이면 29이다.
내 소스
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {
static int[] solve(int[] grades){
// Complete this function
int[] finalGrades = new int[grades.Length];
for (int i = 0; i < grades.Length; i++)
{
// less than 38 fail grade
if (grades[i] < 38)
{
finalGrades[i] = grades[i];
}
else
{
int firstValue = grades[i] / 10 * 10;
int secondValue = grades[i] % 10;
int roundedValue = 0;
if (secondValue > 5)
{
roundedValue = firstValue + 10;
}
else
{
roundedValue = firstValue + 5;
}
if (roundedValue - grades[i] < 3)
{
finalGrades[i] = roundedValue;
}
else
{
finalGrades[i] = grades[i];
}
}
}
return finalGrades;
}
static void Main(String[] args) {
int n = Convert.ToInt32(Console.ReadLine());
int[] grades = new int[n];
for(int grades_i = 0; grades_i < n; grades_i++){
grades[grades_i] = Convert.ToInt32(Console.ReadLine());
}
int[] result = solve(grades);
Console.WriteLine(String.Join("\n", result));
}
}
nabila_ahmed의 답안
#include <bits/stdc++.h>
using namespace std;
void solution() {
int n, x;
cin>>n;
for(int i=0; i<n; i++){
cin>>x;
if(x>=38 and x%5>=3){
while(x%5!=0){
x++;
}
}
cout<<x<<endl;
}
}
int main () {
solution();
return 0;
}
enilaydagdemir의 답안
static int solve(int grade){
int result = grade;
if (grade >= 38)
{
if ((5 - (grade % 5) + grade) - grade < 3)
result = 5 - (grade % 5) + grade;
}
return result;
}
static void Main(String[] args) {
int n = Convert.ToInt32(Console.ReadLine());
int[] grades = new int[n];
for(int grades_i = 0; grades_i < n; grades_i++){
grades[grades_i] = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(solve(grades[grades_i]));
}
}
느낀점
내가 생각한거랑은 좀 다른 해결책을 제시함.
내 생각은
- fianlValue 값을 구한다.
- finalValue 에서 현재 값을 뺀다.
- 그 수의 차이가 3미만이면 finalValue 값 (반올림 한다)
- 그 수의 차이가 3이상이면 원래 값 (반올림 하지 않는다)
이런식으로 문제를 해결했다.
등급이 점수 5를 기준으로 나누어 지므로.
(5 - (grade % 5) + grade) 이런식으로도 다음 등급을 파악할 수 있다.
ex) 71
5 - (1) + 71 = 75
ex) 89
5 - (4) + 89 = 90