λ¬Έμ μ€λͺ
λν κ΅μμΈ λΉμ μ, μνΈνκ°λ₯Ό ν΅νμ¬ νμλ€μ΄ μ μΆν κ³Όμ λ¬Όμ νμ μ λΆμ¬νλ €κ³ ν©λλ€. μλλ 0λ²λΆν° 4λ²κΉμ§ λ²νΈκ° λ§€κ²¨μ§ 5λͺ μ νμλ€μ΄ μμ κ³Ό λ€λ₯Έ νμμ κ³Όμ λ₯Ό νκ°ν μ μνμ λλ€.
μμ μ μνμμ, 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μ
λλ€.
μ μΈν μ μλ μ μΈνκ³ νκ· μ ꡬν ν, μλ κΈ°μ€μ λ°λΌ νμ μ λΆμ¬ν©λλ€.
- 4λ² νμμ νκ· μ μλ (65+77+67+65+65) / 5 = 67.8μ
λλ€.
νμλ€μ μ μκ° λ΄κΈ΄ μ μν 2μ°¨μ λ°°μ΄ scoresκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§λλ€. μ΄λ, νμλ€μ νμ μ ꡬνμ¬ νλμ λ¬Έμμ΄λ‘ λ§λ€μ΄μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- 2 ≤ scoresμ νμ κΈΈμ΄(νμ μ) ≤ 10
- scoresμ μ΄μ κΈΈμ΄ = scoresμ νμ κΈΈμ΄
- μ¦, scoresλ νκ³Ό μ΄μ κΈΈμ΄κ° κ°μ 2μ°¨μ λ°°μ΄μ λλ€.
- 0 ≤ scoresμ μμ ≤ 100
- return κ° νμ
- 0λ² νμμ νμ λΆν° μ°¨λ‘λλ‘ μ΄μ΄ λΆμΈ νλμ λ¬Έμμ΄μ return ν©λλ€.
μ μΆλ ₯ μ
μ μΆλ ₯ μ μ€λͺ
μ
μΆλ ₯ μ #1
λ¬Έμ μμμ κ°μ΅λλ€.
μ μΆλ ₯ μ #2
μ μΆλ ₯ μ #3
- 1λ² νμμ΄ μκΈ° μμ μ νκ°ν 50μ μ [49, 50, 31]μμ μ μΌν μ΅κ³ μ μ΄λ―λ‘, νκ· μ ꡬν λ μ μΈν©λλ€.
- 2λ² νμμ΄ μκΈ° μμ μ νκ°ν 100μ μ [90, 38, 100]μμ μ μΌν μ΅κ³ μ μ΄λ―λ‘, νκ· μ ꡬν λ μ μΈν©λλ€.
public String solution(int[][] scores) {
StringBuilder sb = new StringBuilder();
for (int row = 0; row < scores.length; row++) {
int sum = 0;
int max = -1;
int min = 101;
int length = scores.length;
boolean isUnique = true;
int selfScore = scores[row][row];
for (int col = 0; col < scores.length; col++) {
min = Math.min(scores[col][row], min);
max = Math.max(scores[col][row], max);
if (row != col && selfScore == scores[col][row]) {
isUnique = false;
}
sum += scores[col][row];
}
if (isUnique && (max == selfScore || min == selfScore)) {
length -= 1;
sum -= selfScore;
}
sb.append(this.scoreToGrade(sum / length));
}
return sb.toString();
}
private String scoreToGrade(int score) {
switch (score / 10) {
case 10:
case 9:
return "A";
case 8:
return "B";
case 7:
return "C";
case 6:
case 5:
return "D";
default:
return "F";
}
}