Language/C++
[프로그래머스][Level3][C++][String] 2018 KAKAO BLIND RECRUITMENT[1차] - 추석 트래픽 - 컴도리돌이
컴도리돌이
2021. 8. 21. 09:00
728x90
- 주어진 문자열을 split 처리를 해준다. c++ 사용자는 substr을 연습하기에 좋을 것이다. substr(시작 위치, 길이)
- 주어진 문자열을 시간, 분, 초, (밀리) 초 까지 나누어서 해당 값들을 ms 기준으로 설정해준다.
- 마지막 처리 시간을 소수점 3자리까지 보기 때문에 float로 받아 준다. 해당 값도 초 단위이기 때문에 ms 기준으로 설정해준다.
- 모든 값을 ms으로 설정했다면 start 시간과 end 시간을 설정해주고 해당 값들은 나는 pair에 저장해줬다.
- 이중 반복문을 이용해서 처음 pair 벡터 함수의 첫 인자 값의 끝나는 시간 전에 시작한 로그 값들을 count 시켜준다. 그러고 나서 순차적으로 다음 로그도 탐색하여 count 값이 제일 큰 것을 반환해준다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<string> lines) {
int answer = 0;
vector<pair<int,int>> traphic;
for(auto s : lines)
{
int hh = stoi(s.substr(11,2)) * 3600000,
mm = stoi(s.substr(14,2)) * 60000,
ss = stoi(s.substr(17,2)) * 1000,
ms = stoi(s.substr(20,3));
float time = stof(s.substr(24)) * 1000;
int end_time = (hh + mm + ss + ms),
start_time = end_time - time + 1;
traphic.push_back({start_time,end_time});
}
for(int i=0,count = 0; i<traphic.size(); i++,count = 0)
{
for(int j= i ; j < traphic.size(); j++)
if(traphic[j].first < traphic[i].second + 1000) count++;
answer = max(count,answer);
}
return answer;
}