μ½λ©ν
μ€νΈ/μ½λ©ν
μ€νΈ μ°μ΅
[C++] νλ‘κ·Έλλ¨Έμ€ 2018 KAKAO BLIND RECRUITMENT [1μ°¨] μ νλ²μ€
Bradbury
2020. 10. 28. 09:27
728x90
(1μκ° 40)
HH:MMννμ μκ°μ λΆμΌλ‘ μΉν(intλ‘ λ³ν) ν μ°μ μμ νμ μ§μ΄λ£μλ€.
μ μΌ λ¦μ μκ°μ ꡬνλ κ±°λκΉ λ§μ§λ§ μ΄ν μ°¨λ μ κΉμ§λ νμΉ κ°λ₯ν μΈμμ λ§μΆ° μ κ±°ν΄μ£Όκ³
λ§μ§λ§ μ΄νμμλ νμΉ μΈμμ΄ λΉ κ²½μ° λ§μ§λ§ μ΄νμκ°μ΄ λμ°© μκ° μ€ μ μΌ λ¦μ μκ°μ΄κ³
νμΉ μΈμμ΄ κ°λ μ°Όμ κ²½μ° μ μΌ λ§μ§λ§μ ν μ¬λμμ -1 νκ² λμ°© μκ° μ€ μ μΌ λ¦μ μκ°μ΄λ€.
#include <string>
#include <vector>
#include <queue>
using namespace std;
string solution(int n, int t, int m, vector<string> timetable) {
priority_queue<int, vector<int>, greater<int>> pq;
vector<int> bus;
int answer = 0;
// ν¬λ£¨ λκΈ°μ΄ μκ° μ λ ¬νκΈ°
for (int i = 0; i < timetable.size(); i++) {
int hour = atoi(timetable[i].substr(0, 2).c_str());
int minute = atoi(timetable[i].substr(3, 2).c_str());
int time = hour * 60 + minute;
pq.push(time);
}
// λ²μ€ μ΄μμκ° μ μ₯
int startTime = 9 * 60;
for (int i = 0; i < n; i++) {
bus.push_back(startTime + t * i);
}
// λ§μ§λ§ μ΄μ μκ° μ κΉμ§ λκΈ°μ΄ μ§μ°κΈ°
int idx;
for (idx = 0; idx < bus.size() - 1; idx++) {
for (int j = 0; j < m; j++) {
if (!pq.empty()) {
if (bus[idx] >= pq.top()) {
pq.pop();
}
}
}
}
// λ§μ§λ§ λ²μ€κ° κ°λ μ°Όλμ§
bool isEmpty = true;
// λ§μ§λ§ μ΄μ μκ°
for (int j = 0; j < m; j++) {
if (!pq.empty()) {
if (bus[idx] >= pq.top()) {
answer = pq.top();
pq.pop();
}else {
answer = bus[idx];
isEmpty = false;
break;
}
}else {
answer = bus[idx];
isEmpty = false;
break;
}
}
// λ²μ€κ° κ°λ μ°Όμ κ²½μ° μ μΌ λ§μ§λ§μ ν μ¬λλ³΄λ€ 1 μμ κ²½μ°κ° μ λ΅
if(isEmpty) answer = answer - 1;
// μκ° λ³ν
string ansHour = answer / 60 > 9 ? to_string(answer / 60) : '0' + to_string(answer / 60);
string ansMinute = answer % 60 > 9 ? to_string(answer % 60) : '0' + to_string(answer % 60);
string ansStr = ansHour + ':' + ansMinute;
return ansStr;
}
728x90