[BOJ] [1차] 셔틀버스
Date:
[BOJ] [1차] 셔틀버스
Problem URL : [1차] 셔틀버스
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
string getTime(int time) {
string answer = "";
if (time <= 9)
answer += "0" + to_string(time);
else
answer += to_string(time);
return answer;
}
string solution(int n, int t, int m, vector<string> timetable) {
string answer = "";
int standingTime = 0;
vector<int> times;
for (auto& time : timetable)
times.push_back(stoi(time.substr(0, 2)) * 60 + stoi(time.substr(3, 2)));
sort(times.begin(), times.end());
int idx = 0;
int busTime = 540; // 09:00
int size = times.size();
for (int bus = 1; bus <= n; bus++) {
int num = 0;
while (num < m && idx < size) {
if (times[idx] <= busTime) { // 현재 버스 시각보다 빨리 줄섰을 때
num++;
idx++;
}else {
break;
}
}
if (bus == n) {
if (num < m)
standingTime = busTime; // 탈 수 있는 크루가 m명보다 작으면 여유있게 busTime에 타면 된다.
else
standingTime = times[idx - 1] - 1; // 탈 수 있는 크루가 m명이상이면, m번째 인원보다는 1분 빨리 줄 서야 한다.
}
busTime += t;
}
int hours = standingTime / 60;
answer = getTime(hours);
answer += ":";
int minutes = standingTime % 60;
answer += getTime(minutes);
return answer;
}
Comments
카카오 문제답게 구현문제이다.
댓글