Решение 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