Notice
Recent Posts
Recent Comments
Link
거의 알고리즘 일기장
추석 트래픽_프로그래머스_2018카카오_lv3 본문
https://programmers.co.kr/learn/courses/30/lessons/17676
1. 풀이 방법
이 문제는 고려할게 크게 3가지 였다.
1) 문자열 처리방법
2) 처리시간은 시작시간과 끝시간을 포함
3) string을 double형으로 바꿀때 정밀도 때문의 약간의 오차
1)같은 경우는 그냥 2016-09-15 hh:mm:ss.sss로 인덱스가 고정적이여서 그냥 처음에는 인덱스로 받아와서 풀었었는데 여러 풀이를 찾다보니 밑의 함수를 만들어서 푸는 편이 깔끔한거 같다.
vector<string>strtok(string str, char del = ' ')
{
vector<string> ret;
int prev = 0;
for (int i = 0; i < (int)str.size(); i++)
{
if (str[i] == del)
{
ret.push_back(str.substr(prev, i - prev));
prev = i+1;
}
}
//나머지 부분
if (prev != str.size())
{
ret.push_back(str.substr(prev, str.size() - prev));
}
return ret;
}
2), 3)은 모든수를 (초*1000)단위의 정수형으로 바꾸면 정밀도도 생각해줄 필요없고, 시작시간과 끝시간을 포함하는것은
범위를 구해줄때 -1만 해주면 된다.
2. 코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<string>strtok(string str, char del = ' ')
{
vector<string> ret;
int prev = 0;
for (int i = 0; i < (int)str.size(); i++)
{
if (str[i] == del)
{
ret.push_back(str.substr(prev, i - prev));
prev = i+1;
}
}
//나머지 부분
if (prev != str.size())
{
ret.push_back(str.substr(prev, str.size() - prev));
}
return ret;
}
int solution(vector<string> lines) {
int answer = 0;
vector<pair<long long, long long>>data;
for (int i = 0; i < (int)lines.size(); i++)
{
//문자열 나누기
vector<string> temp = strtok(lines[i]);
vector<string >tstr = strtok(temp[1], ':');
long long endTime = (long long)(((stod(tstr[0]) * 3600) + (stod(tstr[1]) * 60) + stod(tstr[2]))*1000);
long long worktime = (long long)(stod(strtok(temp[2], 's')[0])*1000);
data.push_back(make_pair(endTime, worktime));
}
for (int i = 0; i < (int)data.size(); i++)
{
long long c1e = data[i].first;
long long c1ep = c1e + 1000 - 1;
int cnt = 0;
for (int j = i; j < (int)data.size(); j++)
{
long long c2e = data[j].first;
long long c2s = c2e - data[j].second + 1;
if (c1e <= c2e && c2e <= c1ep)
cnt++;
else if (c1e <= c2s && c2s <= c1ep)
cnt++;
else if (c2s < c1e && c1ep < c2e)
cnt++;
}
answer = max(cnt, answer);
}
return answer;
}
3. 후기
아직 기초가 부족해서 그런지 문자열 처리에서도 애먹었고 그냥 전체적으로 조금 어려웠다..ㅠ
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
스티커 붙이기_백준 18808번 (0) | 2020.04.02 |
---|---|
Sorting Game _ 알고스팟 _ 종만북 (0) | 2020.04.01 |
보행자 천국_카카오_프로그래머스 lv3 (0) | 2020.04.01 |
백준 16946번 _벽 부수고 이동하기 4 (0) | 2020.03.31 |
N으로 표현_프로그래머스 lv3 (0) | 2020.03.31 |
Comments