[BOJ] 1931. 회의실 배정

레몬커드요거트·2026년 4월 14일

코딩테스트준비

목록 보기
42/66
post-thumbnail

팁!

한 줄 코드

const infoArr = input.slice(1, N + 1).map(line => line.split(" ").map(Number));

내가 쓴 코드

for (let n = 1; n <= N; n++) {
  let line = input[n];
  let [start, end] = line.split(" ").map(Number);
  infoArr[n - 1] = [start, end];
}

가독성 좋은 코드

const infoArr = new Array(N);

// 데이터 채우기
for (let n = 1; n <= N; n++) {
  let line = input[n];
  infoArr[n - 1] = line.split(" ").map(Number);
}

전체코드

const fs = require("fs");
const input = fs
  .readFileSync(process.platform === "linux" ? "/dev/stdin" : "input.txt")
  .toString()
  .trim()
  .split("\n");

const N = Number(input[0]);
const infoArr = Array.from({ length: N }, () => [0, 0]);

for (let n = 1; n <= N; n++) {
  let line = input[n];
  let [start, end] = line.split(" ").map(Number);
  infoArr[n - 1] = [start, end];
}

infoArr.sort((a, b) => {
  // 1순위: 끝나는 시간 기준
  if (a[1] !== b[1]) {
    return a[1] - b[1];
  }
  // 2순위: 끝나는 시간이 같다면 시작 시간 기준
  return a[0] - b[0];
});

let count = 0;
let endTime = 0;

for (let n = 0; n < N; n++) {
  const [start, end] = infoArr[n];
  if (start >= endTime) {
    count++;
    endTime = end;
  }
}

console.log(count);
profile
비요뜨 최고~

0개의 댓글