## DEV Community

MD ARIFUL HAQUE

Posted on • Updated on

# 506. Relative Ranks

506. Relative Ranks

Easy

You are given an integer array `score` of size `n`, where `score[i]` is the score of the `ith` athlete in a competition. All the scores are guaranteed to be unique.

The athletes are placed based on their scores, where the `1st` place athlete has the highest score, the `2nd` place athlete has the `2nd` highest score, and so on. The placement of each athlete determines their rank:

• The `1st` place athlete's rank is `"Gold Medal"`.
• The `2nd` place athlete's rank is `"Silver Medal"`.
• The `3rd` place athlete's rank is `"Bronze Medal"`.
• For the `4th` place to the `nth` place athlete, their rank is their placement number (i.e., the `xth` place athlete's rank is `"x"`).

Return an array `answer` of size `n` where `answer[i]` is the rank of the `ith` athlete.

Example 1:

• Input: score = [5,4,3,2,1]
• Output: ["Gold Medal","Silver Medal","Bronze Medal","4","5"]
• Explanation: The placements are [1st, 2nd, 3rd, 4th, 5th].

Example 2:

• Input: score = [10,3,8,9,4]
• Output: ["Gold Medal","5","Bronze Medal","Silver Medal","4"]
• Explanation: The placements are [1st, 5th, 3rd, 2nd, 4th].

Constraints:

• `n == score.length`
• `1 <= n <= 104`
• `0 <= score[i] <= 1066`
• All the values in `score` are unique.

Solution:

``````class Solution {

/**
* @param Integer[] \$score
* @return String[]
*/
function findRelativeRanks(\$score) {
\$n = count(\$score);
\$ans = array_fill(0, \$n, "");
\$indices = range(0, \$n - 1);

usort(\$indices, function(\$a, \$b) use (\$score) {
return \$score[\$a] > \$score[\$b] ? -1 : 1;
});

for (\$i = 0; \$i < \$n; \$i++) {
if (\$i == 0) {
\$ans[\$indices[0]] = "Gold Medal";
} elseif (\$i == 1) {
\$ans[\$indices[1]] = "Silver Medal";
} elseif (\$i == 2) {
\$ans[\$indices[2]] = "Bronze Medal";
} else {
\$ans[\$indices[\$i]] = strval(\$i + 1);
}
}

return \$ans;
}
}
``````