본문 바로가기
코딩테스트(알고리즘)/프로그래머스

[프로그래머스] 호텔대실 (Javascript)

by Cafe Mocha 2023. 2. 9.

코딩테스트 연습 - 호텔 대실 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


알고리즘 : 구현

 

function solution(book_time) {
    // 데이터 정렬
  for (let i = 0; i < book_time.length; i++) {
    book_time[i] = book_time[i].map((v) => v.split(":").map((val) => +val));
  }
  // 시간순으로 정렬
  book_time.sort((a, b) => {
    if (a[0][0] === b[0][0]) return a[0][1] - b[0][1];
    return a[0][0] - b[0][0];
  });

  // room을 지정하면서 확인
  let room = [];

  for (let i = 0; i < book_time.length; i++) {
    let temp = book_time[i];
    if (temp[1][1] >= 50) {
      temp[1][0] += 1;
      temp[1][1] -= 50;
    } else {
        temp[1][1] +=10;
    }
    // 방이 비었을때
    if (!room.length) room.push(temp);
    else {
      // 방이 안비었는데 미리 들어간 사람이 있을때
      let idx = room.findIndex((v) => {
        return v[1][0] < temp[0][0] || (v[1][0] === temp[0][0] && v[1][1] <= temp[0][1]);
      });

      if (idx !== -1) {
        // 입실 가능
        room[idx] = temp;
      } else {
        // 입실 불가능
        room.push(temp);
      }
    }
  }
    console.log(room);
    return room.length;
}