string 함수 사용, 문자열 사용법 등 문자열을 잘 다룰 수 있어야한다.
이번 추석에도 시스템 장애가 없는 명절을 보내고 싶은 어피치는 서버를 증설해야 할지 고민이다. 장애 대비용 서버 증설 여부를 결정하기 위해 작년 추석 기간인 9월 15일 로그 데이터를 분석한 후 초당 최대 처리량을 계산해보기로 했다. 초당 최대 처리량은 요청의 응답 완료 여부에 관계없이 임의 시간부터 1초(=1,000밀리초)간 처리하는 요청의 최대 개수를 의미한다.
입력형식
출력형식
solution 함수에서는 로그 데이터 lines 배열에 대해 초당 최대 처리량을 리턴한다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<string> lines) {
int answer = 0;
vector<int> start_t, end_t;
//각 시간을 ms단위로 저장
for(int i = 0; i < lines.size(); i++)
{
string h, m, s, ms;
int ih, im, is, process;
lines[i].pop_back();
h = lines[i].substr(11, 2);
m = lines[i].substr(14, 2);
s = lines[i].substr(17, 2);
ms = lines[i].substr(20, 3);
process = stof(lines[i].substr(24, 5)) * 1000;
ih = stoi(h) * 3600 * 1000;
im = stoi(m) * 60 * 1000;
is = stoi(s) * 1000 + stoi(ms);
//시작과 끝 각각 저장
//시작시간
start_t.push_back(ih + im + is - process + 1);
//끝나는 시간
end_t.push_back(ih + im + is);
}
for(int i = 0; i < lines.size(); i++)
{
//정확한 종료 시간은 +1초
int end_time = end_t[i] + 1000;
int count = 0;
for(int j = i; j < lines.size(); j++)
{
if(start_t[j] < end_time)
count++;
}
if(answer < count)
answer = count;
}
return answer;
}