https://school.programmers.co.kr/learn/courses/30/lessons/155651
시, 분으로 2차원 배열 만들어서 해당 예약 시간 배열에 +1 해주고, 배열에서 최댓값 찾는 방법으로 풂!
9번, 17번 테케만 계속 실패해서 의문이었는데 청소 시간 10분 더했을 때 분이 59를 넘어가는 경우, 시/분을 변경해줘야 하는 것이였음
근데, 시/분 변경할 때 (시간+1) 해주니까 자꾸 core dump가 떴다. 문제에서 예약시간이 자정을 넘어가는 경우가 없다고 해서 배열 [24][60]으로 한 건데 [25][61]로 해야 해결됐다. 이건 살짝 의문...
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int arr[25][61];
int solution(vector<vector<string>> book_time) {
int answer = 0;
for(int i=0; i<book_time.size(); i++) {
int sh = stoi(book_time[i][0].substr(0, 2));
int sm = stoi(book_time[i][0].substr(3, 2));
int fh = stoi(book_time[i][1].substr(0, 2));
int fm = stoi(book_time[i][1].substr(3, 2));
fm += 10;
if(fm > 59) {
fh++;
fm -= 60;
}
for(int j=sh; j<=fh; j++) {
for(int k=0; k<60; k++) {
if(j == sh) {
if(k < sm)
continue;
}
if(j == fh) {
if(k >= fm)
break;
}
arr[j][k]++;
}
}
}
for(int i=0; i<24; i++) {
for(int j=0; j<60; j++) {
if(arr[i][j] > answer)
answer = arr[i][j];
}
}
return answer;
}