본 블로그는 비상업적, 비영리적 용도의 학업만을 위해 글을 게시합니다.
#include <string>
#include <vector>
using namespace std;
int getPlaytime(string start, string end)
{
int startHour = stoi(start.substr(0, 2));
int startMinute = stoi(start.substr(3, 2));
int endHour = stoi(end.substr(0, 2));
int endMinute = stoi(end.substr(3, 2));
return (endHour - startHour) * 60 + (endMinute - startMinute);
}
string changeSharp(string s)
{
string change = "";
for(int i = 0; i < s.length(); i++)
{
if(s[i] == '#')
change[change.length() - 1] += 10;
else
change += s[i];
}
return change;
}
string solution(string m, vector<string> musicinfos) {
int playtime = 0, maxPlaytime = 0;
int spot = 0;
string music = "";
string melody = "", allMelody = "", changeM = changeSharp(m);
string answer = "";
for(int i = 0; i < musicinfos.size(); i++)
{
allMelody = "";
music = musicinfos[i];
playtime = getPlaytime(music.substr(0, 5), music.substr(6, 5));
spot = music.find(',', 12) + 1;
melody = changeSharp(music.substr(spot, music.length() - spot));
if(changeM.length() > playtime)
continue;
while(playtime > allMelody.length())
allMelody += melody;
allMelody = allMelody.substr(0, playtime);
//cout << allMelody << '\n' << changeM <<"\n\n";
if(allMelody.find(changeM, 0) != -1)
{
if(maxPlaytime < playtime)
{
answer = music.substr(12, spot - 13);
maxPlaytime = playtime;
}
}
}
if(!maxPlaytime)
return "(None)";
return answer;
}