두치의 개발공부

BaekJoon_1931(회의실 배정) 본문

알고리즘

BaekJoon_1931(회의실 배정)

Du_chi 2022. 5. 10. 20:08

 

문제풀이

하나의 회의실에 여러개의 회의 일정이 있고 이 일정을 최대로 잡을 수 있도록 한다.
회의를 최대로 할려면 짧은 회의를 많이 잡는게 효율적이다.
등록된 회의를 아래 기준으로 정렬한다.
1. 제일 빠르게 끝나는 회의 순서
2. 끝나는 시간이 같을 시에는 시작 시간이 빠른 순서
이렇게 정렬하여 순서대로 회의를 잡는다.
시작 시간이 이전 종료 시간보다 나중이면 새로운 회의이다.

코드

const answer = ([n, ...arr]) => {
  const times = arr.map((list) => list.split(" ").map(Number));

  // 가장 빠르게 끝나는 순 => 끝나는 시간이 같다면 빠르게 시작하는 순
  times.sort((a, b) => {
    if (a[1] === b[1]) {
      return a[0] - b[0];
    } else {
      return a[1] - b[1];
    }
  });

  let answer = 0;
  let beforeEndTime = 0;

  for (const data of times) {
    const startTime = data[0];
    const endTime = data[1];

    // 시작시간이 이전의 종료시간보다 같거나 크면 새로운 회의
    if (startTime >= beforeEndTime) {
      answer++;
      beforeEndTime = endTime;
    }
  }

  console.log(answer);
};

const input = [];
require("readline")
  .createInterface(process.stdin, process.stdout)
  .on("line", (line) => {
    input.push(line);
  })
  .on("close", () => {
    answer(input);
    process.exit();
  });

 

코드는 깃헙에서도 확인 할 수 있습니다.🤗

https://github.com/duduchi/Algorithm/tree/main/Greedy

 

GitHub - duduchi/Algorithm: 알고리즘 이론 및 구현 소스 정리 프로젝트 입니다.

알고리즘 이론 및 구현 소스 정리 프로젝트 입니다. Contribute to duduchi/Algorithm development by creating an account on GitHub.

github.com

 

'알고리즘' 카테고리의 다른 글

BaekJoon_1543(문서 검색)  (0) 2022.06.23
BaekJoon_1541(잃어버린 괄호)  (0) 2022.05.11
BaekJoon_11047(동전)  (0) 2022.05.09
BaekJoon_11399(ATM)  (0) 2022.05.06
BaekJoon_1932(정수 삼각형)  (0) 2022.05.03