No Rules Rules

[1차] 추석 트래픽 (feat. 프로그래머스, 17676번) 본문

생활/코테

[1차] 추석 트래픽 (feat. 프로그래머스, 17676번)

개발하는 완두콩 2022. 7. 21. 10:12
728x90
반응형

[1차] 추석 트래픽
https://programmers.co.kr/learn/courses/30/lessons/17676

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

반응형
// woohyeon.kim
#include <string>
#include <vector>
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>

using namespace std;

vector<string> token_string(const string& text, const char& delim)
{
    vector<string> result;
    string token;
    stringstream ss(text);
    while(getline(ss, token, delim))
    {
        result.push_back(token);
    }
    return result;
}

int trans_time(const int& hour, const int& min, const int& sec, const int& ms)
{
    int ret_value = 0;
    ret_value += hour * 3600 * 1000;
    ret_value += min * 60 * 1000;
    ret_value += sec * 1000;
    ret_value += ms;
    return ret_value;
}

const bool comp(const pair<int, int>& v1, const pair<int, int>& v2)
{
    if(v1.first != v2.first)
        return v1.first < v2.first;
    return v1.second < v2.second;
}

int solution(vector<string> lines) {
    int answer = 0;
    //              start : 0, end : 1
    vector<pair<int, int>> storage;
    for(const auto& line : lines)
    {
        auto tmpl = token_string(line, ' ');
        auto time = token_string(tmpl[1], ':');
        auto ms = token_string(time[2], '.');
        auto T = stod(tmpl[2].erase(tmpl[2].size() - 1)) * 1e3;
        auto get_time = trans_time(stoi(time[0]), stoi(time[1]), stoi(ms[0]), stoi(ms[1]));
        
        auto start_time = get_time - T + 1;
        if(start_time < 0)      start_time = 0;
        auto end_time = get_time + 999;
        storage.push_back(make_pair(start_time, 0));
        storage.push_back(make_pair(end_time, 1));
    }
    sort(storage.begin(), storage.end()/*, comp*/);
    
    auto tmpl = 0;
    for(const auto& item : storage)
    {
        if(item.second == 0)
            ++tmpl;
        else
            --tmpl;
        answer = max(answer, tmpl);
    }
    return answer;
}
// *&)*@*

한시간 넘게 걸린것 같습니다.

머리가 나빠서 문제 자체를 이해하는데 한참 걸렸네요.

comp함수는 sort의 비교를 위한 예입니다만 주석이 가능합니다.

이유는 sort의 인자가 pair면 자동으로 first, second를 비교하기 때문이죠!

728x90
반응형
Comments