프로그래머스 LEVEL 2(호텔 대실)

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2023-04-19

  • 해결 방법 :

    • book_time의 길이가 1000이므로 최대 n^2까지 가능할 것이라 생각해 완전 탐색 수행
      • hhmm 형식을 minutes로 변환
      • 입실 시간을 기준으로 오름차순 정렬
      • forEach로 각 대실 시간을 돌며
        • arr 중 퇴실 시간 + 10 <= 현재 입실 시간인 값이 있으면 현재 퇴실 시간으로 대체
        • 없으면 새 방이 필요하므로 arr에 push()
  • 회고 :

    • 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