반응형
programmers.co.kr/learn/courses/30/lessons/17678
스트링 시간을 분으로 바꿈.
버스가 매 주기로 도착할 때 해당 시간 이내의 있는 대기자들 처리.
마지막 버스가 왔을 때, 자리가 비었다면 그 버스가 온 시간에 도착하면 됨.
꽉 찼다면 마지막에 탄 사람보다 1분 일찍 오면 됨.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
string solution(int n, int t, int m, vector<string> timetable) {
vector<int> vec;
string answer = "";
for(int i = 0; i < timetable.size(); i++)
{
int time = 60 * (10 * (timetable[i][0] - '0') + (timetable[i][1] - '0'));
time += 10 * (timetable[i][3] - '0') + (timetable[i][4] - '0');
vec.push_back(time);
}
sort(vec.begin(),vec.end());
int bus = 540;
int leave = 0;
for(int i = 0; i < n; i++)
{
//cout << to_string(bus / 60) << " : " <<to_string(bus % 60) <<endl;
int human = 0;
int last = 0;
for(int j = 0; j < vec.size(); j++)
{
if(bus >= vec[j] && vec[j] != -1)
{
if(human < m)
{
last = vec[j];
vec[j] = -1;
human++;
leave++;
}
}
}
if(i == n - 1)
{
//cout << "막차 " << leave << "/" << vec.size() << endl;
if(human < m)
{
string hstr = to_string(bus/60);
string mstr = to_string(bus%60);
if(bus / 60 < 10)
{
hstr = '0' + to_string(bus/60);
}
if(bus % 60 < 10)
{
mstr = '0' + to_string(bus%60);
}
answer += hstr;
answer += ":";
answer += mstr;
//cout << "자리 있음" << endl;
}
else
{
string hstr = to_string((last - 1)/60);
string mstr = to_string((last - 1)%60);
if(((last-1) / 60) < 10)
{
hstr = '0' + to_string((last-1)/60);
}
if(((last -1) % 60) < 10)
{
mstr = '0' + to_string((last-1)%60);
}
answer += hstr;
answer += ":";
answer += mstr;
//cout << "자리 없음" << endl;
}
}
bus += t;
}
//cout << answer << endl;
return answer;
}
반응형
'Algorithm' 카테고리의 다른 글
2019 카카오 개발자 겨울 인턴십 불량 사용자 (0) | 2020.09.11 |
---|---|
백준 1941번 소문난 칠공주 (0) | 2020.09.11 |
2019 KAKAO BLIND RECRUITMENT 후보키 (0) | 2020.09.10 |
2018 KAKAO BLIND RECRUITMENT[1차] 프렌즈4블록 (0) | 2020.09.10 |
2018 KAKAO BLIND RECRUITMENT[1차] 뉴스 클러스터링 (0) | 2020.09.09 |