프로그래머스 LEVEL 2(호텔 대실)
-
사용 언어 : javascript
-
해결 날짜 : 2023-04-19
-
해결 방법 :
- book_time의 길이가 1000이므로 최대 n^2까지 가능할 것이라 생각해 완전 탐색 수행
- hhmm 형식을 minutes로 변환
- 입실 시간을 기준으로 오름차순 정렬
- forEach로 각 대실 시간을 돌며
- arr 중 퇴실 시간 + 10 <= 현재 입실 시간인 값이 있으면 현재 퇴실 시간으로 대체
- 없으면 새 방이 필요하므로 arr에 push()
- book_time의 길이가 1000이므로 최대 n^2까지 가능할 것이라 생각해 완전 탐색 수행
-
회고 :
- x
-
코드
function solution(book_time) { const arr = []; const hhmmToMinutes = (hhmm) => { const [hh, mm] = hhmm.split(':').map((v) => +v); return hh * 60 + mm; }; book_time .map(([s, e]) => [hhmmToMinutes(s), hhmmToMinutes(e)]) .sort((a, b) => a[0] - b[0]) .forEach(([s, e]) => { if (!arr.length) { arr.push(e); return; } const idx = arr.findIndex((v) => v + 10 <= s); idx >= 0 ? (arr[idx] = e) : arr.push(e); }); return arr.length; }
-
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges