[codeup] 4051 : 시간외 근무 수당
문제
[문제1] 시간외 근무 수당 (16점, 제한시간 1초)
A대학에서는 시간외 근무를 수기로 작성하고 있다. 행정실의 K씨는 시간외 근무 수당을 전산으로 처리하고자 한다. 이 대학의 시간외 근무 수당 규정은 아래와 같다.
-
시간외 근무는 최초 1시간은 제외하며, 최대 4시간까지 인정한다.
-
시간외 근무에 따른 금액은 30분에 5,000원으로 한다.
-
5일간의 시간외 근무 합계가 15시간 이상이면 받는 금액의 5%를 감하여 지급한다.
-
5일간의 시간외 근무 합계가 5시간 이하이면 받는 금액의 5%를 더하여 지급한다.
시간외 근무 수당을 계산하는 프로그램을 작성하시오.
입력
-
5일간의 시간외 근무 시작 시각 s와 종료 시각 e가 주어진다. (단, 16.0 ≦ s ≦ e ≦ 24.0)
-
30분 단위로 입력이 가능하며, 30분은 0.5로 입력된다. (16시 30분은 16.5로 표기한다.)
입력 예시
16.0 16.5
17.0 20.5
18.5 23.0
22.5 23.5
19.5 22.5
출력
첫 줄에 최종 시간외 근무 수당을 출력한다(단, 단위는 생략한다).
출력 예시
80000
문제풀이
처음에 문제가 복잡해보여서 어려울 것이라 생각했는데 막상 코드를 작성하고 나니 그렇게 어려운 건 아니였다.
뭔가 더 깔끔하게 풀 수 있을 것 같은데 마음처럼 잘 되지는 않는 것 같다.
테스트 케이스는 내가 직접 만들어서 몇가지 해보았을때 정상적으로 진행되는 것 확인했다.
work_time = [list(map(float, input().split())) for _ in range(5)]
def calculate_work_time(work_time):
day_working_time = []
for i in range(len(work_time)):
time = work_time[i][1] - work_time[i][0]
day_working_time.append(time)
# 시간 외 근무시간 중 1.0 시간 제외
day_working_time[i] = day_working_time[i] - 1.0
return day_working_time
def total_work_time(work_time):
working_time = calculate_work_time(work_time)
total_working_time = 0
for i in range(len(working_time)):
if working_time[i] <= 0:
working_time[i] = 0
elif working_time[i] >= 4.0:
working_time[i] = 4.0
for time in working_time:
total_working_time += time
return total_working_time
def total_overtimePay(work_time):
time = total_work_time(work_time)
overtimePay = ((time/0.5)*5000)
if time >= 15.0:
overtimePay -= (overtimePay * 0.05)
elif time <= 5.0:
overtimePay += (overtimePay * 0.05)
return int(overtimePay)
print(total_overtimePay(work_time))
Author And Source
이 문제에 관하여([codeup] 4051 : 시간외 근무 수당), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@woonmong/codeup-4051-시간외-근무-수당저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)