HackerRank Sorting: Comparator problem solution YASH PAL, 31 July 202410 September 2024 In this HackerRank Sorting: Comparator Interview preparation kit you have Given an array of n Player objects, write a comparator that sorts them in order of decreasing score. If 2 or more players have the same score, sort those players alphabetically ascending by name. Problem solution in Python programming. from functools import cmp_to_key class Player: def __init__(self, name, score): self.name = name self.score = score def __repr__(self): self.name = "" self.score = 0 def comparator(a, b): if a.score == b.score: if a.name > b.name: return 1 else: return -1 if a.score > b.score: return -1 else: return 1 n = int(input()) data = [] for i in range(n): name, score = input().split() score = int(score) player = Player(name, score) data.append(player) data = sorted(data, key=cmp_to_key(Player.comparator)) for i in data: print(i.name, i.score) Problem solution in Java Programming. import java.util.*; class Player { String name; int score; Player(String name, int score) { this.name = name; this.score = score; } } // Write your Checker class here class Checker implements Comparator<Player> { @Override public int compare(Player p1, Player p2) { if (p1.score == p2.score) { return p1.name.compareTo(p2.name); } return -Integer.compare(p1.score, p2.score); } } public class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); Player[] player = new Player[n]; Checker checker = new Checker(); for(int i = 0; i < n; i++){ player[i] = new Player(scan.next(), scan.nextInt()); } scan.close(); Arrays.sort(player, checker); for(int i = 0; i < player.length; i++){ System.out.printf("%s %sn", player[i].name, player[i].score); } } } Problem solution in C++ programming. #include <algorithm> #include <iostream> #include <vector> using namespace std; struct Player { string name; int score; }; int main() { int n; cin >> n; vector<Player> players(n); for(int i = 0; i < n; cin >> players[i].name, cin >> players[i].score, ++i); sort(players.begin(), players.end(), [](Player &a, Player &b) { if(a.score > b.score) return true; if(a.score == b.score) return a.name < b.name; return false; }); for(const auto &player : players) cout << player.name << " " << player.score << endl; } coding problems interview prepration kit