반응형
코딩 테스트를 위한 소프티어(Softeer) 연습 문제 중 근무 시간 문제를 풀어보았다.
연습 문제 - 근무 시간
- 난이도 : level 1
- 정답률 : 93%
https://softeer.ai/practice/info.do?idx=1&eid=990
문제 해설
문제는 이해는 아주 쉽다. 월~금요일까지의 출근 시간과 퇴근 시간이 주어지면 일주일 동안 총 몇분 근무했는지 출력하는 프로그램이다. 여기서 포인트는 입력이 아래와 같이 입력이 되는데, 효율적으로 입력을 계산하는 것이다.
// 입력
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 라는 라이브러리 함수를 사용하는 것이 익숙치 않아서 조금 찾아보았다.
'개발 > 자료구조, 알고리즘' 카테고리의 다른 글
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 비밀 메뉴 (0) | 2023.02.14 |
---|---|
[코딩 테스트] 소프티어(Softeer) 연습 문제 - GBC (0) | 2023.02.13 |
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 주행거리 비교하기 (0) | 2023.02.10 |
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 성적평가 (0) | 2023.02.09 |
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 8단 변속기 (0) | 2023.02.09 |