From 9bf93b9d7e897ee77353150bc87a1edde45c8140 Mon Sep 17 00:00:00 2001 From: Piotr Dec Date: Fri, 15 Mar 2024 22:36:16 +0100 Subject: [PATCH] feat: Comparator --- .../datastructures/comparator/Solution.java | 52 +++++++++++++++++++ .../comparator/SolutionTest.java | 39 ++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 src/main/java/eu/ztsh/training/hackerrank/datastructures/comparator/Solution.java create mode 100644 src/test/java/eu/ztsh/training/hackerrank/datastructures/comparator/SolutionTest.java diff --git a/src/main/java/eu/ztsh/training/hackerrank/datastructures/comparator/Solution.java b/src/main/java/eu/ztsh/training/hackerrank/datastructures/comparator/Solution.java new file mode 100644 index 0000000..77b6000 --- /dev/null +++ b/src/main/java/eu/ztsh/training/hackerrank/datastructures/comparator/Solution.java @@ -0,0 +1,52 @@ +package eu.ztsh.training.hackerrank.datastructures.comparator; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.Scanner; + +/** + * source: Java Comparator + */ + +class Checker implements Comparator { + + @Override + public int compare(Player o1, Player o2) { + var points = o2.score - o1.score; + return points != 0 ? points : o1.name.compareTo(o2.name); + } + +} + +// Hackerrank code below (slightly modified) +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); + Arrays.stream(player).forEach(value -> System.out.printf("%s %s%s", value.name, value.score, System.lineSeparator())); + } + +} + +class Player { + + String name; + int score; + + Player(String name, int score) { + this.name = name; + this.score = score; + } + +} diff --git a/src/test/java/eu/ztsh/training/hackerrank/datastructures/comparator/SolutionTest.java b/src/test/java/eu/ztsh/training/hackerrank/datastructures/comparator/SolutionTest.java new file mode 100644 index 0000000..00390fa --- /dev/null +++ b/src/test/java/eu/ztsh/training/hackerrank/datastructures/comparator/SolutionTest.java @@ -0,0 +1,39 @@ +package eu.ztsh.training.hackerrank.datastructures.comparator; + +import eu.ztsh.training.hackerrank.HackerRankTest; +import eu.ztsh.training.hackerrank.SolutionClassDescription; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.List; + +@DisplayName("HackerRank challenges: Java Comparator") +class SolutionTest extends HackerRankTest { + + @Test + public void testCase0() { + simpleAssert( + List.of( + "5", + "amy 100", + "david 100", + "heraldo 50", + "aakansha 75", + "aleksa 150" + ), + List.of( + "aleksa 150", + "amy 100", + "david 100", + "aakansha 75", + "heraldo 50" + ) + ); + } + + @Override + protected SolutionClassDescription getSolutionClassDescription() { + return new SolutionClassDescription(Solution.class); + } + +} \ No newline at end of file