#include <string>
#include <vector>
using namespace std;
int solution(vector<string> lines) {
int answer = 0;
vector<pair<int, int>> val;
int count, hms, sum, num, dif;
string str;
for (int i = 0; i < lines.size(); i++) {
count = -1;
hms = 0, sum = 0, num = 0, dif = 0;
str = "";
//년,월,일 패스
while (lines[i][++count] != ' ') {
}
//시간을 초단위로 전환
while (lines[i][++count] != ' ') {
if (lines[i][count] == ':' || lines[i][count] == '.') {
if (hms == 0) {
sum += stoi(str) * 3600;
}
else if (hms == 1) {
sum += stoi(str) * 60;
}
else if (hms == 2) {
sum += stoi(str);
}
str = "";
hms++;
}
else {
str += lines[i][count];
}
}
//소수점 더하기 까다로우니 자리수 3자리 업
num = stoi(str);
for (int j = 0; j < 3; j++) {
sum = sum * 10;
}
sum += num;
//응답완료시간을 3자리 업했기 때문에, 처리시간도 3자리 업해주기 위해서 앞에 0의 개수를 구한다
str = "";
num = 0;
count++;
while (lines[i][count] == '0' || lines[i][count] == '.') {
if (lines[i][count] != '.') {
num++;
}
count++;
}
while (count < lines[i].length() - 1) {
if (lines[i][count] != '.') {
str += lines[i][count];
}
count++;
}
//자리수 3자리 업한 처리시간 계산
dif = stoi(str);
for (int j = 0; j < 3 - num - str.length() + 1; j++) {
dif = dif * 10;
}
//시작값과 종료값을 벡터에 추가한다
val.push_back({ sum - dif + 1, sum });
}
//이중 반복문을 이용해 두번 째 반복문에서의 값이 첫 번째 범위(val[j].first < val[j].second + 1000 && val[j].second > val[j].first)에 속할 때 count를 증가시킨다
int cur_min, cur_max;
int max = 0;
for (int i = 0; i < val.size(); i++) {
cur_max = val[i].second, cur_min = val[i].first;
count = 1;
for (int j = i + 1; j < val.size(); j++) {
if (val[j].first < cur_max + 1000 && val[j].second > cur_min) {
count++;
}
}
max = max > count ? max : count;
}
answer = max;
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[BOJ]15683번: 감시 (0) | 2020.07.18 |
---|---|
[프로그래머스]종이접기 (0) | 2020.07.17 |
[프로그래머스]N진수 게임 (0) | 2020.07.14 |
[프로그래머스]파일명 정렬 (0) | 2020.07.13 |
[프로그래머스]압축문자열 (0) | 2020.07.12 |