Menu
Coddy logo textTech

요약: 데이터 처리

Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 45번째.

challenge icon

챌린지

쉬움

세 개의 입력을 받게 됩니다: 쉼표로 구분된 직원 이름 목록, 해당 직원의 주간 근무 시간 목록, 그리고 최소 근무 시간 기준입니다. 첫 번째 입력은 Alice,Bob,Charlie,Diana,Eve 형식의 이름이며, 두 번째 입력은 45,32,50,28,40 형식의 숫자 형태의 근무 시간이고, 세 번째 입력은 숫자 형태의 최소 근무 시간 기준(예: 35)입니다.

세 입력을 모두 읽고 적절한 배열로 변환하세요. 직원 이름을 키로, 근무 시간을 값으로 하는 결합된 연관 배열을 생성합니다. 그런 다음 고차 배열 함수를 사용하여 다음 작업을 수행하세요:

  1. array_filter()와 사용자 정의 콜백 함수를 사용하여 최소 근무 시간 기준 이상으로 근무한 직원만 유지합니다.
  2. array_map()과 사용자 정의 콜백 함수를 사용하여 필터링된 직원의 초과 근무 수당을 계산합니다 (초과 근무는 40시간을 초과하는 시간이며, 정규 시간당 $25의 1.5배 비율로 지급됩니다).
  3. 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()를 사용하여 총 초과 근무 수당을 계산합니다

// 결과 출력
// 자격이 있는 각 직원의 초과 근무 수당을 출력합니다
// 총 초과 근무 수당을 출력합니다

?>

논리 & 흐름의 모든 레슨