2018 카카오 채용 코딩 테스트 문제입니다.
문제 확인
구현 문제입니다.
풀이
문제에서 가장 중요한 요소는 마지막 버스에 자리의 여부입니다.
- 마지막 버스에 자리가 남는 경우 : 마지막 버스의 도착 시간에 탑승하면 됩니다.
- 마지막 버스에 자리가 없는 경우 : 기다리는 사람들 중 m 번째 사람보다 1분 전에 도착하면 됩니다.
timetable을 읽으면서 마지막 버스 직전까지 기다리는 사람을 구해두고 마지막 버스에서 기다리는 사람에 따라 결과를 내면 됩니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int time_to_int(string &t) {
return (t[0] - '0') * 600 + (t[1] - '0') * 60 + (t[3] - '0') * 10 + (t[4] - '0');
}
string int_to_time(int t) {
char tmp[6];
sprintf(tmp, "%02d:%02d", t / 60, t % 60);
return string(tmp);
}
string solution(int n, int t, int m, vector<string> timetable) {
string answer = "";
int ary[2000], size = timetable.size();
for (int i = 0; i < size; i++)
ary[i] = time_to_int(timetable[i]);
sort(ary, ary + size);
//현재 시각, 기다리는 사람, ary index
int cur_time = 9 * 60, wait = 0, i = 0;
for (;n > 1; cur_time += t) {//마지막 버스 이전까지
for (; i < size && ary[i] <= cur_time; ++wait, ++i);
wait = wait > m ? wait - m : 0;//최대 m명까지 탑승
n--;
}
for (; i < size && ary[i] <= cur_time; ++wait, ++i);//마지막 버스에서 기다리는 사람 계산
if (wait < m)
return int_to_time(cur_time);//자리가 있으면 버스 도착 시간에 탑승
return int_to_time(ary[i - (wait - m) - 1]-1);//자리가 없으면 기다리는 사람 중 (m 번째 사람이 온 시간 - 1)분에 탑승
}
int main() {
vector<string> time = { "09:00","09:00","09:01","09:01" };
solution(3, 2, 2, time);
}
|
cs |
정확성 테스트
테스트 1 〉 | 통과 (0.02ms, 3.77MB) |
테스트 2 〉 | 통과 (0.02ms, 3.78MB) |
테스트 3 〉 | 통과 (0.02ms, 3.96MB) |
테스트 4 〉 | 통과 (0.02ms, 3.98MB) |
테스트 5 〉 | 통과 (0.02ms, 3.77MB) |
테스트 6 〉 | 통과 (0.02ms, 3.95MB) |
테스트 7 〉 | 통과 (0.04ms, 3.8MB) |
테스트 8 〉 | 통과 (0.02ms, 3.95MB) |
테스트 9 〉 | 통과 (0.02ms, 3.95MB) |
테스트 10 〉 | 통과 (0.02ms, 3.89MB) |
테스트 11 〉 | 통과 (0.02ms, 3.94MB) |
테스트 12 〉 | 통과 (0.03ms, 3.94MB) |
테스트 13 〉 | 통과 (0.03ms, 3.93MB) |
테스트 14 〉 | 통과 (0.02ms, 3.91MB) |
테스트 15 〉 | 통과 (0.02ms, 3.95MB) |
테스트 16 〉 | 통과 (0.02ms, 3.76MB) |
테스트 17 〉 | 통과 (0.04ms, 3.96MB) |
테스트 18 〉 | 통과 (0.03ms, 3.79MB) |
테스트 19 〉 | 통과 (0.03ms, 3.93MB) |
테스트 20 〉 | 통과 (0.03ms, 3.95MB) |
테스트 21 〉 | 통과 (0.03ms, 3.86MB) |
테스트 22 〉 | 통과 (0.12ms, 3.9MB) |
테스트 23 〉 | 통과 (0.11ms, 3.9MB) |
테스트 24 〉 | 통과 (0.04ms, 3.95MB) |
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
반응형
'알고리즘 문제 > [프로그래머스]' 카테고리의 다른 글
[프로그래머스] 프렌즈4블록 (0) | 2021.04.10 |
---|---|
[프로그래머스][JAVA] 뉴스 클러스터링 (0) | 2021.04.02 |
[프로그래머스][JAVA] 추석 트래픽 (0) | 2021.04.01 |
[프로그래머스] 무지의 먹방 라이브 (0) | 2021.03.28 |
[프로그래머스] 매칭 점수 (0) | 2021.03.27 |