Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- public class Race {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- List<String> racers = Arrays.stream(scanner.nextLine().split(", "))
- .collect(Collectors.toList());
- Map<String, Integer> racersDistances = new LinkedHashMap<>();
- racers.forEach(racer -> racersDistances.put(racer, 0));
- // G!32e%o7r#32g$235@!2e
- String regexLetter = "[A-Za-z]+";
- Pattern patternLetter = Pattern.compile(regexLetter);
- String regexDigit = "[0-9]";
- Pattern patternDigit = Pattern.compile(regexDigit);
- String input = scanner.nextLine();
- while (!input.equals("end of race")) {
- StringBuilder nameBuilder = new StringBuilder();
- Matcher matcherName = patternLetter.matcher(input);
- while (matcherName.find()) {
- nameBuilder.append(matcherName.group());
- }
- int distance = 0;
- Matcher matcherDigit = patternDigit.matcher(input);
- while (matcherDigit.find()) {
- distance += Integer.parseInt(matcherDigit.group());
- }
- String racerName = nameBuilder.toString();
- if (racersDistances.containsKey(racerName)) {
- int currentDistance = racersDistances.get(racerName);
- racersDistances.put(racerName, currentDistance + distance);
- }
- input = scanner.nextLine();
- }
- List<String> firstThreeNames = racersDistances
- .entrySet()
- .stream()
- .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
- .limit(3)
- .map(entry -> entry.getKey())
- .collect(Collectors.toList());
- System.out.println("1st place: " + firstThreeNames.get(0));
- System.out.println("2nd place: " + firstThreeNames.get(1));
- System.out.println("3rd place: " + firstThreeNames.get(2));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment