fork download
  1.  
  2. import java.util.*;
  3.  
  4. public class Main {
  5. static class Klasemen {
  6. private Map<String, Integer> poin = new LinkedHashMap<>();
  7.  
  8. public Klasemen(String[] klub) {
  9. for (String nama : klub) {
  10. poin.put(nama, 0);
  11. }
  12. }
  13.  
  14. public void catatPermainan(String klubKandang,
  15. String klubTandang,
  16. String skor) {
  17. String[] hasil = skor.split(":");
  18. int skorKandang = Integer.parseInt(hasil[0]);
  19. int skorTandang = Integer.parseInt(hasil[1]);
  20.  
  21. if (!poin.containsKey(klubKandang) ||
  22. !poin.containsKey(klubTandang)) {
  23. return;
  24. }
  25.  
  26. if (skorKandang > skorTandang) {
  27. poin.put(klubKandang, poin.get(klubKandang) + 3);
  28. } else if (skorKandang < skorTandang) {
  29. poin.put(klubTandang, poin.get(klubTandang) + 3);
  30. } else {
  31. poin.put(klubKandang, poin.get(klubKandang) + 1);
  32. poin.put(klubTandang, poin.get(klubTandang) + 1);
  33. }
  34. }
  35.  
  36. public Map<String, Integer> cetakKlasemen() {
  37. List<Map.Entry<String, Integer>> daftar =
  38. new ArrayList<>(poin.entrySet());
  39.  
  40. daftar.sort((a, b) ->
  41. Integer.compare(b.getValue(), a.getValue()));
  42.  
  43. Map<String, Integer> hasil = new LinkedHashMap<>();
  44. for (Map.Entry<String, Integer> entri : daftar) {
  45. hasil.put(entri.getKey(), entri.getValue());
  46. }
  47.  
  48. return hasil;
  49. }
  50.  
  51. public String ambilPeringkat(int nomorPeringkat) {
  52. if (nomorPeringkat < 1 ||
  53. nomorPeringkat > poin.size()) {
  54. return null;
  55. }
  56.  
  57. List<Map.Entry<String, Integer>> daftar =
  58. new ArrayList<>(cetakKlasemen().entrySet());
  59.  
  60. return daftar.get(nomorPeringkat - 1).getKey();
  61. }
  62. }
  63.  
  64. public static void main(String[] args) {
  65. Klasemen klasemen = new Klasemen(
  66. new String[]{"Liverpool", "Chelsea", "Arsenal"}
  67. );
  68.  
  69. klasemen.catatPermainan("Arsenal", "Liverpool", "2:1");
  70. klasemen.catatPermainan("Arsenal", "Chelsea", "1:1");
  71. klasemen.catatPermainan("Chelsea", "Arsenal", "0:3");
  72. klasemen.catatPermainan("Chelsea", "Liverpool", "3:2");
  73. klasemen.catatPermainan("Liverpool", "Arsenal", "2:2");
  74. klasemen.catatPermainan("Liverpool", "Chelsea", "0:0");
  75.  
  76. System.out.println(klasemen.cetakKlasemen());
  77. System.out.println(klasemen.ambilPeringkat(2));
  78. }
  79. }
  80.  
Success #stdin #stdout 0.08s 53472KB
stdin
Standard input is empty
stdout
{Arsenal=8, Chelsea=5, Liverpool=2}
Chelsea