결혼식 : Greedy

frenchkebab·2021년 8월 28일
0
post-thumbnail

내 풀이

function solution(times) {
  let answer = 0;
  for (let i = 0; i < 72; i++) {
    let cnt = 0;
    for (let x of times) {
      if (x[0] <= i && i < x[1]) cnt++;
    }
    answer = Math.max(answer, cnt);
  }
  return answer;
}

let arr = [
  [14, 18],
  [12, 15],
  [15, 20],
  [20, 30],
  [5, 14]
];
console.log(solution(arr));

코드간결하지만 사실상 Brute Force로 푼 것이나 마찬가지..


Solution 풀이

function solution(times) {
  let order = [];
  let answer = Number.MIN_SAFE_INTEGER;
  let cnt = 0;
  for (let x of arr) {
    order.push([x[0], 's']);
    order.push([x[1], 'e']);
  }
  order.sort((a, b) => {
    if (a[0] == b[0]) return a[1].charCodeAt() - b[1].charCodeAt();
    else return a[0] - b[0];
  });

  for (let x of order) {
    if (x[1] === 's') cnt++;
    else cnt--;
    answer = Math.max(answer, cnt);
  }

  return answer;
}

let arr = [
  [14, 18],
  [12, 15],
  [15, 20],
  [20, 30],
  [5, 14]
];
console.log(solution(arr));

이렇게 미리 정렬 을 하는 idea 가 참 신기하다.
미리 예시시뮬레이션을 많이 돌려봐야겠다

profile
Blockchain Dev Journey

0개의 댓글