[softeer level1] 근무 시간(C++, JAVA, Python)

lsh235·2023년 2월 5일
0

CodingTest

목록 보기
3/7
post-thumbnail

문제

https://softeer.ai/practice/info.do?idx=1&eid=990

직원이 근무한 총 시간을 분 단위로 계산하여 출력한다.

해석

휴가를 쓰지 않으므로 총 5번의 근무시간을 입력받는다.
HH:MM ~ HH:MM으로 주어진 5일의 근무시간을 분으로 계산하여 총 몇 분간 일하였는지 출력한다.

구현

  1. 5일간 일한 시간을 입력받는다.
  2. 입력 받은 시간을 라인단위로 구분할 수 있도록한다.
  3. 라인단위로 파싱한 시간을 시작시간 끝난시간으로 파싱한다.
  4. 라인(하루)당 근무한 시간을 분으로 구하여 전체 일한 시간에 더한다.
  5. 반복이 끝나면 전체 시간을 출력한다.

C++

#include<iostream>
#include<string>
#include<vector>

using namespace std;

int TotalWorkingHours(int &total_time, const vector<string> &start_times, const vector<string> &end_times) {
  	// 3.
	for (int i = 0; i < 5; ++i){
		const int &delimiter = start_times[i].find(':');
		const int &start_hour = stoi(start_times[i].substr(0, delimiter));
		const int &start_min = stoi(start_times[i].substr(delimiter + 1));
		const int &start_time_to_min = (start_hour * 60) + start_min;

		const int &end_hour = stoi(end_times[i].substr(0, delimiter));
		const int &end_min = stoi(end_times[i].substr(delimiter + 1));
		const int &end_time_to_min = (end_hour * 60) + end_min;

  		// 4.
		total_time += end_time_to_min - start_time_to_min;
	}

	return total_time;
}

int main(int argc, char** argv)
{
	int total_time = 0;
	vector<string> start_times(5);
	vector<string> end_times(5);

    // 1. 2.
	for (int i = 0; i < 5; ++i) {
		cin >> start_times[i] >> end_times[i];
	}

  	// 5.
	cout << TotalWorkingHours(total_time, start_times, end_times);

	return 0;
}

JAVA

import java.util.*;
import java.io.*;

public class Main
{
    public static void main(String args[]) throws IOException {
  		// 1.
        BufferedReader times = new BufferedReader (new InputStreamReader(System.in));
        int total_time = 0;
        for (int i = 0; i < 5; ++i) {
            // 2.
            String time = times.readLine();
            StringTokenizer st = new StringTokenizer(time, " ");
            String start_time = st.nextToken();
            String end_time = st.nextToken();

  			// 3.
            StringTokenizer st_start_time = new StringTokenizer(start_time, ":");
            String start_time_hour = st_start_time.nextToken();
            String start_time_min = st_start_time.nextToken();
            int start_time_to_min = (Integer.parseInt(start_time_hour) * 60) + Integer.parseInt(start_time_min);

            StringTokenizer st_end_time = new StringTokenizer(end_time, ":");
            String end_time_hour = st_end_time.nextToken();
            String end_time_min = st_end_time.nextToken();
            int end_time_to_min = (Integer.parseInt(end_time_hour) * 60) + Integer.parseInt(end_time_min);

  			// 4.
            total_time += end_time_to_min - start_time_to_min;
        }

  		// 5.
        System.out.println(total_time);
    }
}

Python

import sys

total_time = 0
// 1. 2.
for _ in range(5):
    start_time, end_time = sys.stdin.readline().split()

  	// 3.
    start_time_hour, start_time_min = map(int, start_time.split(':'))
    start_time_to_min =  (start_time_hour*60) + start_time_min

    end_time_hour, end_time_min = map(int, end_time.split(':'))
    end_time_to_min =  (end_time_hour*60) + end_time_min

  	// 4.
    total_time += end_time_to_min - start_time_to_min

// 5.
print(total_time)

0개의 댓글