diff --git a/sitou/src/B148_Rank.java b/sitou/src/B148_Rank.java new file mode 100644 index 0000000000000000000000000000000000000000..7f8d2217d7f78a7ad8a2c38505d8d09f07fb0aeb --- /dev/null +++ b/sitou/src/B148_Rank.java @@ -0,0 +1,51 @@ +package src; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Scanner; + +public class B148_Rank { + public static void main(String args[]) { + execute(); + } + + static void execute() { + final InputData inputData = input(); + final Result result = solveHowRank(inputData); + output(result); + } + + private static InputData input() { + final Scanner scan = new Scanner(System.in); + final int numOfParticipants = scan.nextInt(); + + final List scoreList = new ArrayList<>(); + for (int count = 0; count < numOfParticipants; count++) { + scoreList.add(scan.nextInt()); + } + + scan.close(); + return new InputData(numOfParticipants, scoreList); + + } + + public static Result solveHowRank(InputData inputData) { + final List participantsRankList = new ArrayList<>(); + final List ranking = new ArrayList<>(inputData.getScoreList()); + Collections.sort(ranking, Collections.reverseOrder()); + + for (int score : inputData.getScoreList()) { + participantsRankList.add(ranking.indexOf(score) + 1); + } + + return new Result(participantsRankList); + } + + private static void output(final Result result) { + for (int rank : result.getParticipantsRankList()) { + System.out.println(rank); + } + + } +} diff --git a/sitou/src/InputData.java b/sitou/src/InputData.java new file mode 100644 index 0000000000000000000000000000000000000000..e89f4790ff27d3097ea8323895b735e6030f9938 --- /dev/null +++ b/sitou/src/InputData.java @@ -0,0 +1,18 @@ +package src; + +import java.util.List; + +public class InputData { + final int numOfParticipants; + final List scoreList; + + public InputData(final int numOfParticipants, final List scoreList) { + this.numOfParticipants = numOfParticipants; + this.scoreList = scoreList; + } + + public final List getScoreList(){ + return scoreList; + } + +} diff --git a/sitou/src/Result.java b/sitou/src/Result.java new file mode 100644 index 0000000000000000000000000000000000000000..c2dea3102915057f8e732b6cd9708cd11791dcbd --- /dev/null +++ b/sitou/src/Result.java @@ -0,0 +1,15 @@ +package src; + +import java.util.List; + +public class Result { + private final List participantsRankList; + + public Result(final List participantsRankList) { + this.participantsRankList= participantsRankList; + } + + public List getParticipantsRankList() { + return participantsRankList; + } +} \ No newline at end of file diff --git a/sitou/test/B148_Test.java b/sitou/test/B148_Test.java new file mode 100644 index 0000000000000000000000000000000000000000..99c6a5fbf15f210d5f0e582f1bb79cfd315998fb --- /dev/null +++ b/sitou/test/B148_Test.java @@ -0,0 +1,57 @@ +package test; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.*; +import java.util.Arrays; +import java.util.List; +import org.junit.Test; +import src.B148_Rank; +import src.InputData; +import src.Result; + +public class B148_Test { + @Test + public void 正しく表示() { + final InputData inputData = new InputData(4,Arrays.asList(12,5,36,10)); + final Result result = B148_Rank.solve(inputData); + List actual = result.getParticipantsRankList(); + + final List expected = Arrays.asList(2,4,1,3); + + assertThat(actual, is(expected)); + } + + @Test + public void 同じ順位が2人いるとき() { + final InputData inputData = new InputData(5,Arrays.asList(35,14,4,23,14)); + final Result result = B148_Rank.solve(inputData); + List actual = result.getParticipantsRankList(); + + final List expected = Arrays.asList(1,3,5,2,3); + + assertThat(actual, is(expected)); + } + + @Test + public void 全員同じ順位のとき() { + final InputData inputData = new InputData(3,Arrays.asList(10,10,10)); + final Result result = B148_Rank.solve(inputData); + List actual = result.getParticipantsRankList(); + + final List expected = Arrays.asList(1,1,1); + + assertThat(actual, is(expected)); + } + + @Test + public void 参加者が1人のとき() { + final InputData inputData = new InputData(1,Arrays.asList(2)); + final Result result = B148_Rank.solve(inputData); + List actual = result.getParticipantsRankList(); + + final List expected = Arrays.asList(1); + + assertThat(actual, is(expected)); + } + +}