[BOJ] 광고 삽입
Date:
[BOJ] 광고 삽입
Problem URL : 광고 삽입
#include <string>
#include <vector>
using namespace std;
typedef long long ll;
ll v[360001];
int toSec(string t) {
int ret = 0;
ret += ((t[0] - '0') * 10 + (t[1] - '0')) * 3600;
ret += ((t[3] - '0') * 10 + (t[4] - '0')) * 60;
ret += (t[6] - '0') * 10 + t[7] - '0';
return ret;
}
string toString(int t) {
string hour = to_string(t / 3600);
string min = to_string((t % 3600) / 60);
string sec = to_string(t % 60);
if (hour.size() == 1) hour = '0' + hour;
if (min.size() == 1) min = '0' + min;
if (sec.size() == 1) sec = '0' + sec;
return hour + ':' + min + ':' + sec;
}
string solution(string play_time, string adv_time, vector<string> logs) {
int n = toSec(play_time);
int interval = toSec(adv_time);
for (string &log : logs) {
int s = toSec(log.substr(0, 8));
int e = toSec(log.substr(9));
v[s]++;
v[e]--;
}
for (int i = 1; i <= n; i++) v[i] += v[i - 1];
for (int i = 1; i <= n; i++) v[i] += v[i - 1];
int insertTime = 0;
ll sum = v[interval - 1];
ll maxSum = sum;
for (int s = 1; s + interval - 1 <= n; s++) {
sum = v[s + interval - 1] - v[s - 1];
if (maxSum < sum) {
maxSum = sum;
insertTime = s;
}
}
return toString(insertTime);
}
Comments
누적 합 개념을 잘 배워두자.
올해 카카오, 네이버 클라우드 코테에서 알아뒀어야 하는 스킬이었는데 이제서야 배웠다 ㅠㅠ
댓글