문제 설명
직업에 아르바이트, 판매사원이 있습니다. 직원들 급여의 총합을 계산하기 위해 아래와 같이 Job, PartTimeJob, SalesJob 클래스를 작성했습니다.
Job :
- Job : 직업을 나타내는 클래스입니다.
- salary : 직업의 급여를 나타냅니다. 초기 급여는 0입니다.
- get_salary : 직업의 급여를 return 합니다.
PartTimeJob :
- PartTimeJob : 아르바이트를 나타내는 클래스이며 Job을 상속합니다.
- work_hour : 아르바이트를 한 시간입니다.
- pay_per_hour : 아르바이트의 시간 당 급여입니다.
- get_salary : 아르바이트 급여를 계산하여 return 합니다.
SalesJob :
- SalesJob : 판매사원을 나타내는 클래스이며 Job을 상속합니다.
- sales_result : 판매사원의 판매실적입니다.
- pay_per_sale : 판매실적 당 급여입니다.
- get_salary : 판매사원의 급여를 계산하여 return 합니다.
주어진 아르바이트, 판매사원 급여의 총합을 계산하려 합니다.
- 아르바이트는 기본적으로
아르바이트를 한 시간 X 시간 당 급여
를 받으며 40시간 이상 근무시 8시간만큼의 급여를 추가로 받습니다. - 판매사원은 기본적으로
판매실적 * 판매실적 당 급여
를 받으며 판매실적이 10건이 넘으면 급여를 2배로, 20건이 넘으면 급여를 3배로 받습니다.
아르바이트의 정보가 담긴 2차원 배열 part_time_jobs, 판매사원의 정보가 담긴 2차원 배열 sales_jobs가 매개변수로 주어질 때, 모든 직원들 급여의 총합을 return 하도록 solution 함수를 작성하려 합니다. 위 클래스 구조를 참고하여 주어진 코드의 빈칸을 적절히 채워 전체 코드를 완성해주세요.
매개변수 설명
아르바이트의 정보가 담긴 2차원 배열 part_time_jobs, 판매사원의 정보가 담긴 2차원 배열 sales_jobs가 solution 함수의 매개변수로 주어집니다.
- part_time_jobs은 길이가 1이상 10이하인 2차원 배열입니다.
- part_time_jobs의 각 원소는 [아르바이트를 한 시간, 시간 당 급여]입니다.
- 아르바이트를 한 시간은 1이상 100이하입니다.
- 시간 당 급여는 1,000이상 20,000이하입니다.
- sales_jobs은 길이가 1이상 10이하인 2차원 배열입니다.
- sales_jobs의 각 원소는 [판매실적, 판매실적 당 급여]입니다.
- 판매실적은 1이상 30이하입니다.
- 판매실적 당 급여는 1,000이상 20,000이하입니다.
return 값 설명
모든 직원들 급여의 총합을 return 합니다.
입출력 예
part_time_jobs | sales_jobs | return |
---|---|---|
[[10, 5000], [43, 6800], [5, 12800]] | [[3, 18000], [12, 8500]] | 718800 |
입출력 예 설명
첫번째 아르바이트에게 50,000(10 * 5,000)을 지급합니다.
두번째 아르바이트에게 346,800(43 * 6,800 + 8 * 6,800)을 지급합니다.
세번째 아르바이트에게 64,000(5 * 12,800)을 지급합니다.
첫번째 영업사원에게 54,000(3 * 18,000)을 지급합니다.
두번째 영업사원에게 204,000(12 * 8,500 * 2)을 지급합니다.
따라서 급여의 총합은 718,800입니다.
빈칸 채우기 문제 안내
- 빈칸 채우기는 이미 완성된 코드 중 빈칸에 알맞은 코드를 입력하는 문제 타입입니다.
- 빈칸을 제외한 기본 코드는 수정할 수 없습니다.
- 빈칸을 채우지 않을 경우, 실행 결과에 에러 메시지가 표시됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Job {
public:
int salary;
Job() {
salary = 0;
}
int get_salary() {
return salary;
}
};
class PartTimeJob {
private:
int work_hour, pay_per_hour;
public:
PartTimeJob(int work_hour, int pay_per_hour) {
this->work_hour = work_hour;
this->pay_per_hour = pay_per_hour;
}
{
salary = work_hour * pay_per_hour;
if(work_hour >= 40)
salary += (pay_per_hour * 8);
return salary;
}
};
class SalesJob {
private:
int sales_result, pay_per_sale;
public:
SalesJob(int sales_result, int pay_per_sale) {
this->sales_result = sales_result;
this->pay_per_sale = pay_per_sale;
}
{
if(sales_result > 20)
salary = sales_result * pay_per_sale * 3;
else if(sales_result > 10)
salary = sales_result * pay_per_sale * 2;
else
salary = sales_result * pay_per_sale;
return salary;
}
};
int solution(vector<vector<int>> part_time_jobs, vector<vector<int>> sales_jobs) {
int answer = 0;
for(int i = 0; i < part_time_jobs.size(); i++) {
PartTimeJob part_time_job(part_time_jobs[i][0], part_time_jobs[i][1]);
answer += part_time_job.get_salary();
}
for(int i = 0; i < sales_jobs.size(); i++) {
SalesJob sales_job(sales_jobs[i][0], sales_jobs[i][1]);
answer += sales_job.get_salary();
}
return answer;
}
// 아래는 테스트케이스 출력을 해보기 위한 main 함수입니다.
int main() {
vector<vector<int>> part_time_jobs = {{10, 5000}, {43, 6800}, {5, 12800}};
vector<vector<int>> sales_jobs = {{3, 18000}, {12, 8500}};
int ret = solution(part_time_jobs, sales_jobs);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
cout << "solution 함수의 반환 값은 " << ret << " 입니다." << endl;
}
실행 결과
실행 중지
실행 결과가 여기에 표시됩니다.