[Level 1] 2μ£Όμ°¨_μνΈνκ°
Algorithm
- 2μ£Όμ°¨_μνΈνκ° -
λ¬Έμ
λν κ΅μμΈ λΉμ μ, μνΈνκ°λ₯Ό ν΅νμ¬ νμλ€μ΄ μ μΆν κ³Όμ λ¬Όμ νμ μ λΆμ¬νλ €κ³ ν©λλ€.
μλλ 0λ²λΆν° 4λ² κΉμ§ λ²νΈκ° λ§€κ²¨μ§ 5λͺ μ νμλ€μ΄ μμ κ³Ό λ€λ₯Έ νμμ κ³Όμ λ₯Ό νκ°ν μ μνμ λλ€.
No. | 0 | 1 | 2 | 3 | 4 |
0 | 100 | 90 | 98 | 88 | 65 |
1 | 50 | 45 | 99 | 85 | 77 |
2 | 47 | 88 | 95 | 80 | 67 |
3 | 61 | 57 | 100 | 80 | 65 |
4 | 24 | 90 | 94 | 75 | 65 |
νκ· | 45.5 | 81.25 | 97.2 | 81.6 | 67.8 |
νμ | F | B | A | B | D |
μμ μ μνμμ, iν jμ΄μ κ°μ iλ² νμμ΄ νκ°ν jλ² νμμ κ³Όμ μ μ μ λλ€.
- 0λ² νμμ΄ νκ°ν μ μλ 0λ² νμ λ΄κΈ΄ [100, 90, 98, 88, 65]μ
λλ€.
- 0λ² νμμ μκΈ° μμ μκ² 100μ , 1λ² νμμκ² 90μ , 2λ² νμμκ² 98μ , 3λ² νμμκ² 88μ , 4λ² νμμκ² 65μ μ λΆμ¬νμ΅λλ€.
- 2λ² νμμ΄ νκ°ν μ μλ 2λ² νμ λ΄κΈ΄ [47, 88, 95, 80, 67]μ
λλ€.
- 2λ² νμμ 0λ² νμμκ² 47μ , 1λ² νμμκ² 88μ , μκΈ° μμ μκ² 95μ , 3λ² νμμκ² 80μ , 4λ² νμμκ² 67μ μ λΆμ¬νμ΅λλ€.
λΉμ μ κ° νμλ€μ΄ λ°μ μ μμ νκ· μ ꡬνμ¬, κΈ°μ€μ λ°λΌ νμ μ λΆμ¬νλ €κ³ ν©λλ€.
λ§μ½, νμλ€μ΄ μκΈ° μμ μ νκ°ν μ μκ° μ μΌν μ΅κ³ μ λλ μ μΌν μ΅μ μ μ΄λΌλ©΄ κ·Έ μ μλ μ μΈνκ³ νκ· μ ꡬν©λλ€.
- 0λ² νμμ΄ λ°μ μ μλ 0λ² μ΄μ λ΄κΈ΄ [100, 50, 47, 61, 24]μ
λλ€. μκΈ° μμ μ νκ°ν 100μ μ μμ μ΄ λ°μ μ μ μ€μμ μ μΌν μ΅κ³ μ μ΄λ―λ‘, νκ· μ ꡬν λ μ μΈν©λλ€.
- 0λ² νμμ νκ· μ μλ (50+47+61+24)/4 = 45.5μ λλ€.
- 4λ² νμμ΄ λ°μ μ μλ 4λ² μ΄μ λ΄κΈ΄ [65, 77, 67, 65, 65]μ
λλ€. μκΈ° μμ μ νκ°ν 65μ μ μμ μ΄ λ°μ μ μ μ€μμ μ΅μ μ μ΄μ§λ§ κ°μ μ μκ° 2κ° λ μμΌλ―λ‘, μ μΌν μ΅μ μ μ΄ μλλλ€. λ°λΌμ, νκ· μ ꡬν λ μ μΈνμ§ μμ΅λλ€.
- 4λ² νμμ νκ· μ μλ (65+77+67+65+65)/5 = 67.8μ λλ€.
μ μΈν μ μλ μ μΈνκ³ νκ· μ ꡬν ν, μλμ κΈ°μ€μ λ°λΌ νμ μ λΆμ¬ν©λλ€.
νκ· | νμ |
90μ μ΄μ | A |
80μ μ΄μ 90μ λ―Έλ§ | B |
70μ μ΄μ 80μ λ―Έλ§ | C |
50μ μ΄μ 70μ λ―Έλ§ | D |
50μ λ―Έλ§ | F |
νμλ€μ μ μκ° λ΄κΈ΄ μ μν 2μ°¨μ λ°°μ΄ scoresκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§λλ€. μ΄λ, νμλ€μ νμ μ ꡬνμ¬ νλμ λ¬Έμμ΄λ‘ λ§λ€μ΄μ return νλλ‘ solutionν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ μΆλ ₯ μμ
scores | result |
[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] | "FABBD" |
[[50,90],[50,87]] | "DA" |
λ¬Έμ νκΈ°
function solution(scores) {
let result = '';
for(let i = 0; i < scores.length; i++) {
// 1. nλ²μ§Έ κ°λ§ λͺ¨μμ λ°°μ΄μ λ°λ‘ λ§λ€μ΄μΌ νλ€.
let gradeArr = [];
scores.forEach(el => gradeArr.push(el[i]));
// 5. ν¨μλ₯Ό ν΅ν΄ μ»μ νκ· κ°μ κΈ°μ€μ λ§κ² κ°μ 리ν΄μν¨λ€.
result += solution3(solution2(gradeArr, i));
}
return result;
}
function solution2(arr, index) {
let sum = arr.reduce((past, curr) => past + curr, 0);
let [max, min] = [Math.max(...arr), Math.min(...arr)];
// 2. λ³ΈμΈμκ² μ€ μ μκ° μ΅μ λλ μ΅κ³ μ μΌ κ²½μ° μ μλ₯Ό λ°°μ νλ€.
// 3. λ³ΈμΈμκ² μ€ μ μκ° μ΅μ, μ΅κ³ μ μΌ μ§λΌλ μ μΌν κ°μ΄ μλλΌλ©΄ λ°°μ νμ§ μλλ€.
if(arr[index] === max) {
let maxCount = arr.filter(el => el === arr[index]).length;
if(maxCount === 1) return (sum - arr[index]) / (arr.length - 1);
}
else if(arr[index] === min) {
let minCount = arr.filter(el => el === arr[index]).length;
if(minCount === 1) return (sum - arr[index]) / (arr.length - 1);
}
// 4. νκ· κ°μ κ΅¬ν΄ λ¦¬ν΄νλ€.
return sum / arr.length;
}
function solution3(avg) {
if(avg >= 90) return 'A';
else if(avg >= 80 && avg < 90) return 'B';
else if(avg >= 70 && avg < 80) return 'C';
else if(avg >= 50 && avg < 70) return 'D';
else return 'F';
}
μ΄λ²λ¬Έμ λ μ¬μ€ μμ² μ΄λ €μ΄ λ¬Έμ λ μλμμ§λ§ μ²μμ μλμ½λλ₯Ό μμ±νμ§ μκ³ λ¬Έμ λ₯Ό ν΄κ²°νλ©΄μ μκ°μ΄ μ’ κ±Έλ Έλ€.
μΌλ¨μ scoresλ‘λΆν° λ°μ λ°°μ΄λ€μ νλνλ κ²λν΄μΌ νκΈ° λλ¬Έμ gradeArrμ΄λΌλ λΉ λ°°μ΄μ λ§λ€μ΄ κ³ μ°¨ν¨μ forEachλ₯Ό μ¬μ©ν΄ nλ²μ§Έ λ°°μ΄μ gradeArrμ νλνλ λ£μ΄μ€λ€.
κ·Έλ° λ€μμ solution2λΌλ ν¨μμ ν΄λΉλ°°μ΄ gradeArrμ λ³ΈμΈμ μΈλ±μ€λ₯Ό κ°λ¦¬ν€λ κ°μ λ£μ΄μ μλ‘μ΄ ν¨μλ₯Ό λλ €μ£Όλλ° μ΄λ λ³ΈμΈμκ² μ€ μ μκ° μ΅μ λλ μ΅κ³ μ μΌ κ²½μ° ν΄λΉ μ μλ₯Ό λ°°μ νλ κ³Όμ κ³Ό λ³ΈμΈμκ² μ€ μ μκ° μ΅μ , μ΅κ³ μ μΌ μ§λΌλ μ μΌν κ°μ΄ μλλΌλ©΄ λ°°μ νμ§ μμ κ³Όμ μ κ±°μ³ νκ· κ°μ κ΅¬ν΄ λ΄λ³΄λΈλ€.
λ§μ§λ§μΌλ‘ ν΄λΉ μ μμ λν νμ μ λΆμ¬ν΄μ£Όλ©΄ ν¨μλ μμ±μ΄ λλ€.