Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 해시
- switch
- 이분탐색
- broadcast
- Network
- boj
- 프로그래머스
- Backtracking
- programmers
- 브루트포스
- 그리디
- greedy
- DynamicProgramming
- 구현
- Spring
- BFS
- DP
- 해시맵
- HashMap
- 너비우선탐색
- 깊이우선탐색
- 동적계획법
- 알고리즘
- 스프링
- dynamic programming
- DFS
- 백트래킹
- Algorithm
- 네트워크
- 백준
Archives
- Today
- Total
옌의 로그
[Algorithm] 프로그래머스 - 셔틀버스 본문
문제
[프로그래머스] 셔틀버스
(2018 KAKAO BLIND RECRUITMENT)
사용 알고리즘
- X (구현 문제)
해결방법
콘은 출근하기 위해 셔틀버스 줄을 서는데 가장 늦게 줄을 스고자 한다. <- 이 부분에서 콘은 막차를 탈 것이라 가정
콘이 탑승하게 되는 경우는 다음과 같다.
- 막차이고 자리가 남아있는 경우
- 이 경우, 콘은 버스 도착 시간에 오면 된다
- 막차이고 자리가 없는 경우
- 이 경우, 가장 마지막으로 탑승할 수 있는 크루보다 더 일찍 와야함
그러므로, 막차가 올 때까지, 빠른 순으로 정렬한 sortedT를 가지고 크루원들을 탑승시키면서 콘이 탈 시각을 구하면 된다.
소스코드
사용언어 : javascript
function solution(n, t, m, timetable) {
var answer = '';
let i, answerMin;
let sortedT = timetable.sort();
let startMin = 9 * 60;
let arrivedT, arrivedMin;
for (i=0; i<n; i++) {
let nm = m;
while (nm > 0 && sortedT.length != 0) { // 자리 남아있고 줄 선 크루가 있을 경우
arrivedT = sortedT[0].split(":");
arrivedMin = arrivedT[0] * 60 + parseInt(arrivedT[1]);
if (arrivedMin <= startMin) {
sortedT.shift(); // 탑승
nm--;
} else { // 줄선 사람 중에 현재 차량 탈 수 있는 사람 없음
break;
}
}
if (i+1 == n){ // 막차인 경우 콘도 타야함.
if (nm > 0) { // 자리 남았을 경우
answerMin = startMin;
} else { // 자리없음 => 마지막으로 탄 애보다 일찍와야 됨.
answerMin = arrivedMin - 1;
}
} else { // 배차 시켜주기
startMin = startMin + t;
}
}
let answerHours = parseInt(answerMin / 60);
let answerMinutes = answerMin % 60;
if (answerHours < 10) answerHours = "0" + answerHours;
if (answerMinutes < 10) answerMinutes = "0" + answerMinutes;
answer = answerHours + ":" + answerMinutes;
return answer;
}
HH:mm
* split(":")을 통해 H, m을 나누고, H*60을 하여 분단위로 바꾸어 계산해주었다.
한줄평
콘이 막차에 탈거라는 포인트를 잡고 풀면 금방푸는데, 그 생각을 못해서 초반에 좀 해맸던 문제. .ㅎㅎ
'스터디 > 알고리즘' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 표 편집 (0) | 2023.03.03 |
---|---|
[Algorithm] 프로그래머스 - 정수 삼각형 (0) | 2023.02.01 |
[Algorithm] 프로그래머스 - 등산코스 정하기 (5) | 2023.01.25 |
[Algorithm] 프로그래머스 - 주차 요금 계산 (0) | 2023.01.20 |
[Algorithm] 프로그래머스 - 압축 (0) | 2023.01.11 |
Comments