Решение 3-ей задачи easy с HH. Нахождение минимального, максимального и медианного возраста сотрудников.
This commit is contained in:
58
src/main/java/com/algos/hh/easy/AgeProcessor.java
Normal file
58
src/main/java/com/algos/hh/easy/AgeProcessor.java
Normal file
@@ -0,0 +1,58 @@
|
||||
package com.algos.hh.easy;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
//Возраст сотрудников
|
||||
// Вы работаете над модулем внутрикорпоративной системы учета данных сотрудников компании. Программа должна:
|
||||
// 1. Найти сотрудника с минимальным возрастом;
|
||||
// 2. Вычислить медианный возраст всех сотрудников;
|
||||
// 3. Найти сотрудника с максимальным возрастом.
|
||||
// Медиана — число, которое находится в середине этого набора, если его упорядочить по возрастанию. Если набор чисел четный, то берется среднее между двумя средними числами и округляется до целого.
|
||||
// Формат ввода
|
||||
// Одна строка — данные сотрудников. Данные включают имя, возраст и отдел, разделенные запятой, без пробелов. Информация о каждом сотруднике разделена через точку с запятой.
|
||||
// Количество сотрудников — от 2 до 100.
|
||||
// Формат вывода
|
||||
// Одна строка содержит три целых числа, разделенные пробелом: минимальный возраст, медианный возраст и максимальный возраст.
|
||||
// Пример 1
|
||||
// Входные данные:
|
||||
// Иван,28,Инженер;Олег,34,HR;Денис,45,Маркетинг;Анна,30,Инженер;Борис,24,HR
|
||||
// Выходные данные:
|
||||
// 24 30 45
|
||||
// Пример 2
|
||||
// Входные данные:
|
||||
// Павел,28,Инженер;Елена,34,Маркетинг
|
||||
// Выходные данные:
|
||||
// 28 31 34
|
||||
public class AgeProcessor {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String input = "Иван,28,Инженер;Олег,34,HR;Денис,45,Маркетинг;Анна,30,Инженер;Борис,24,HR";
|
||||
String input2 = "Павел,28,Инженер;Елена,34,Маркетинг";
|
||||
System.out.println(processEmployeeData(input));
|
||||
System.out.println(processEmployeeData(input2));
|
||||
}
|
||||
|
||||
public static String processEmployeeData(String input) {
|
||||
|
||||
String[] employees = input.split(";");
|
||||
List<Integer> ages = Arrays.stream(employees)
|
||||
.map(s -> s.split(","))
|
||||
.filter(parts -> parts.length >= 2)
|
||||
.map(e -> Integer.parseInt(e[1]))
|
||||
.sorted()
|
||||
.toList();
|
||||
|
||||
if (ages.isEmpty()) {
|
||||
return "0 0 0";
|
||||
}
|
||||
|
||||
int minAge = ages.get(0);
|
||||
int maxAge = ages.get(ages.size() - 1);
|
||||
int middleOfList = ages.size() / 2;
|
||||
int medAge = ages.size() % 2 != 0 ? ages.get(middleOfList) :
|
||||
Math.round((ages.get(middleOfList) + ages.get(middleOfList - 1)) / 2f);
|
||||
|
||||
return minAge + " " + medAge + " " + maxAge;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user