개발/자료구조, 알고리즘

[코딩 테스트] 소프티어(Softeer) 연습 문제 - 근무 시간

growing-dev 2023. 2. 10. 20:49

 

코딩 테스트를 위한 소프티어(Softeer) 연습 문제 중 근무 시간 문제를 풀어보았다.

 

연습 문제 - 근무 시간

  • 난이도 : level 1
  • 정답률 : 93%

 

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

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

문제 해설

문제는 이해는 아주 쉽다. 월~금요일까지의 출근 시간과 퇴근 시간이 주어지면 일주일 동안 총 몇분 근무했는지 출력하는 프로그램이다. 여기서 포인트는 입력이 아래와 같이 입력이 되는데, 효율적으로 입력을 계산하는 것이다.

// 입력
10:00 19:00
09:00 15:00
10:00 11:00
11:00 22:00
09:00 15:00
// 출력
1980
// 월요일에 9시간, 화요일에 6시간, 수요일에 1시간, 목요일에 11시간, 금요일에 6시간을 근무하였다. 
// 총 근무 시간은 9 + 6 + 1 + 11 + 6 = 33시간, 즉 33 × 60 = 1980분이다.

나는 string을 사용해서 입력을 받은 뒤 stoi 라는 함수를 활용해서 : 를 기준으로 앞뒤로 자르고 입력받은 출퇴근 시간을 분으로 환산한 뒤 그 차이를 계산하면 하루의 근무 시간이 되도록 계산했다. 그걸 5번 반복하면 총 근무시간이 계산될 수 있다.

 

 

코드

#include<iostream>
#include<string>
using namespace std;

int calculateStringToMin(string s) {
	int hour = stoi(s.substr(0, 2));
	int min = stoi(s.substr(3, 2));
	return hour * 60 + min;
}

int main(int argc, char** argv)
{
	int b = 1;
	int result = 0;
	for (int i = 0; i < 5; i++) {
		string start, end;
		cin >> start >> end;
		int start_min = calculateStringToMin(start);
		int end_min = calculateStringToMin(end);
		result += end_min - start_min;
	}
	cout << result;
	return 0;
}

 

결론

level1에 해당하는 문제라서 어렵지 않았지만 string와 stoi 라는 라이브러리 함수를 사용하는 것이 익숙치 않아서 조금 찾아보았다. 

반응형