CodeUp

CodeUp 4051: 시간외 근무 수당

E.W.I 2021. 7. 25. 15:57
반응형

https://codeup.kr/problem.php?id=4051&rid=0 

 

시간외 근무 수당

1. 5일간의 시간외 근무 시작 시각 s와 종료 시각 e가 주어진다. (단, 16.0 ≦ s ≦ e ≦ 24.0) 2. 30분 단위로 입력이 가능하며, 30분은 0.5로 입력된다. (16시 30분은 16.5로 표기한다.)

codeup.kr

 

[문제1] 시간외 근무 수당 (16점, 제한시간 1초)

A대학에서는 시간외 근무를 수기로 작성하고 있다. 행정실의 K씨는 시간외 근무 수당을 전산으로 처리하고자 한다. 이 대학의 시간외 근무 수당 규정은 아래와 같다.

1. 시간외 근무는 최초 1시간은 제외하며, 최대 4시간까지 인정한다.

2. 시간외 근무에 따른 금액은 30분에 5,000원으로 한다.

3. 5일간의 시간외 근무 합계가 15시간 이상이면 받는 금액의 5%를 감하여 지급한다.

4. 5일간의 시간외 근무 합계가 5시간 이하이면 받는 금액의 5%를 더하여 지급한다.

시간외 근무 수당을 계산하는 프로그램을 작성하시오.

 

입력

1. 5일간의 시간외 근무 시작 시각 s와 종료 시각 e가 주어진다. (단, 16.0 ≦ s ≦ e ≦ 24.0)

2. 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

 

 

[문제 풀이]

 

1. 구조체를 이용하여 5일 동안의 시간외 근무 시작 시간과 끝나는 시간을 입력받습니다.

2. 시간외 근무 시간을 계산하여 1시간 이하일때 총 시간외 근무시간에 0을 더해줍니다.

3. 시간외 근무 시간이 1시간을 제외하였는데도 4시간이 넘어가면 4시간만 추가해줍니다.

4. 위 조건이 모두 아닐 때는 시간외 근무시간에 -1을 하여 더해줍니다.

5. 15시간이 넘는 경우, 5시간 이하인 경우를 모두 나누어 돈을 계산해줍니다.

 

 

 

 

#include <stdio.h> 
 
struct time
{
    float start;
    float fin;
};
 
int main(void)
{
    struct time data[5];
    float sum = 0;
    float fee = 0;
    for (int i = 0; i < 5; i++)
    {
        scanf("%f %f"&data[i].start, &data[i].fin);
        if ((data[i].fin - data[i].start) > 0)
        {
            if ((data[i].fin - data[i].start) <= 1)
            {
                sum += 0;
            }
            else if ((data[i].fin - data[i].start) > 1)
            {
                if ((data[i].fin - data[i].start-1> 4)
                {
                    sum += 4.0;
                }
                else
                {
                    sum += data[i].fin - data[i].start-1;
                }
                
            }
        }
    }
    if (sum >= 15.0)
    {
        fee = (sum / 0.5* 5000;
        fee = fee - fee * 0.05;
        printf("%.f", fee);
    }
    else if (sum <= 5.0)
    {
        fee = (sum / 0.5* 5000;
        fee = fee + fee * 0.05;
        printf("%.f", fee);
    }
    else
    {
        fee = (sum / 0.5* 5000;
        printf("%.f", fee);
    }
 
 
    
}
cs

'CodeUp' 카테고리의 다른 글

CodeUp 4592: 색종이1  (0) 2021.08.03
CodeUP 4566: 소수  (0) 2021.08.02
CodeUp 4016: 세 수의 최대공약수 구하기  (0) 2021.07.24
CodeUp 4013 : 진법 변환  (0) 2021.07.24