-
[C++] ํ๋ก๊ทธ๋๋จธ์ค 2018 KAKAO BLIND RECRUITMENT [1์ฐจ] ์ ํ๋ฒ์ค์ฝ๋ฉํ ์คํธ/์ฝ๋ฉํ ์คํธ ์ฐ์ต 2020. 10. 28. 09:27728x90
(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'์ฝ๋ฉํ ์คํธ > ์ฝ๋ฉํ ์คํธ ์ฐ์ต' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ