문제
https://programmers.co.kr/learn/courses/30/lessons/17676
해답
문자열 parsing 후 배열에 담고 스케줄링이 완료된 끝나는 시간을 기준으로 첫 항목부터 검사를 진행합니다.
1초간 윈도우를 잡고 해당구간에 다른 후보군이 있다면 count하는 방법으로 진행했습니다.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
class ScheduledTime {
public:
int startT, endT;
};
vector <ScheduledTime> scheduled;
int solution(vector<string> lines) {
int answer = 0;
for (auto str : lines) {
string Time = str.substr(11, 12);
string duration = str.substr(24);
duration.erase(duration.end() - 1);
int endTime = (((stoi(Time.substr(0, 2)) * 3600) +
(stoi(Time.substr(3, 2)) * 60) +
stoi(Time.substr(6, 2))) * 1000)
+ stoi(Time.substr(9,3));
int durationTime = (stod(duration) * 1000);
int startTime = endTime - durationTime + 1;
cout << startTime << " " << endTime << "\n";
scheduled.push_back({startTime, endTime});
}
for (int i = 0; i < scheduled.size();i++) {
int startTime = scheduled[i].endT;
int endTime = scheduled[i].endT + 999;
int thres = 0;
for (int k = 0; k < scheduled.size(); k++) {
if (scheduled[k].startT <= endTime && scheduled[k].endT >= startTime)
thres++;
}
answer = max(answer, thres);
}
return answer;
}
'Algorithm > 문제 풀이 (Problem Solving)' 카테고리의 다른 글
[C++, 완전탐색] 프로그래머스 양궁대회 (0) | 2022.04.07 |
---|---|
[C++, 문자열] 프로그래머스 오픈채팅방 (0) | 2022.04.04 |
[C++, 문자열] 프로그래머스 다트게임 (0) | 2022.03.31 |
[C++, 문자열] 프로그래머스 신규 아이디 추천 (0) | 2022.03.23 |
[C++, 세그먼트 트리, 데이터추가 반영] 백준 2042번 구간 합 구하기 (0) | 2020.11.22 |
댓글