요약: 데이터 처리
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 45번째.
챌린지
쉬움세 개의 입력을 받게 됩니다: 쉼표로 구분된 직원 이름 목록, 해당 직원의 주간 근무 시간 목록, 그리고 최소 근무 시간 기준입니다. 첫 번째 입력은 Alice,Bob,Charlie,Diana,Eve 형식의 이름이며, 두 번째 입력은 45,32,50,28,40 형식의 숫자 형태의 근무 시간이고, 세 번째 입력은 숫자 형태의 최소 근무 시간 기준(예: 35)입니다.
세 입력을 모두 읽고 적절한 배열로 변환하세요. 직원 이름을 키로, 근무 시간을 값으로 하는 결합된 연관 배열을 생성합니다. 그런 다음 고차 배열 함수를 사용하여 다음 작업을 수행하세요:
array_filter()와 사용자 정의 콜백 함수를 사용하여 최소 근무 시간 기준 이상으로 근무한 직원만 유지합니다.array_map()과 사용자 정의 콜백 함수를 사용하여 필터링된 직원의 초과 근무 수당을 계산합니다 (초과 근무는 40시간을 초과하는 시간이며, 정규 시간당 $25의 1.5배 비율로 지급됩니다).array_reduce()와 사용자 정의 콜백 함수를 사용하여 모든 필터링된 직원의 총 초과 근무 수당 합계를 계산합니다.
결과를 다음 형식으로 출력하세요:
- 먼저, 자격을 갖춘 각 직원의 이름과 초과 근무 수당을
Name: $Amount형식으로 각 줄에 출력합니다 (소수점 둘째 자리까지 반올림). - 마지막으로, 총 초과 근무 수당을
Total: $Amount형식으로 출력합니다 (소수점 둘째 자리까지 반올림).
계산 세부 사항:
- 정규 근무 시간 (40시간까지): 시간당 $25
- 초과 근무 시간 (40시간 초과): 시간당 $37.50 (1.5배 비율)
- 직원이 40시간 이하로 근무한 경우, 초과 근무 수당은 $0.00입니다.
입력 형식:
- 첫 번째 줄: 쉼표로 구분된 직원 이름 (예:
Alice,Bob,Charlie,Diana,Eve) - 두 번째 줄: 쉼표로 구분된 숫자 형태의 근무 시간 (예:
45,32,50,28,40) - 세 번째 줄: 숫자 형태의 최소 근무 시간 기준 (예:
35)
예상 출력: 자격을 갖춘 각 직원과 그들의 초과 근무 수당을 별도의 줄에 출력하고, 이어서 총 초과 근무 수당을 출력합니다. 모든 금액은 소수점 둘째 자리까지 형식이 지정되어야 합니다.
직접 해보기
<?php
// 입력 읽기
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));
// 시간을 정수로 변환
$hours = array_map('intval', $hours);
// 이름과 시간을 결합하여 연관 배열 생성
$employees = array_combine($names, $hours);
// TODO: 아래에 코드를 작성하세요
// 1. array_filter()를 사용하여 최소 시간 이상 근무한 직원을 유지합니다
// 2. array_map()을 사용하여 필터링된 직원의 초과 근무 수당을 계산합니다
// 3. array_reduce()를 사용하여 총 초과 근무 수당을 계산합니다
// 결과 출력
// 자격이 있는 각 직원의 초과 근무 수당을 출력합니다
// 총 초과 근무 수당을 출력합니다
?>