• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

재귀 함수로 문제를 풀어봤습니다.

21.08.27 21:27 작성 조회수 114

0

function solution(arr) {
  arr.sort((ab=> {
    if (a[0] === b[0]) return a[1] - b[1];
    else a[0] - b[0];
  });

  function plan(idxcnt) {
    cnt++;
    for (let i = idx + 1i < arr.lengthi++) {
      if (arr[idx][1] <= arr[i][0]) cnt = Math.max(cntplan(icnt));
    }
    return cnt;
  }
  const answer = plan(00);
  return answer;
}

혹시 어디가 잘못된걸까요 ,,

답변 2

·

답변을 작성해보세요.

0

사리곰탕님의 프로필

사리곰탕

2021.10.09

안녕하세요 강사님!

저는 처음에 시작시간 기준으로 정렬을 해두고 검색하여 최대 회의 배정 개수를 찾아나가는 식으로 접근을 했는데요.

function solution(p) {

p.sort(([x1, y1], [x2, y2]) => (x1-x2) || (y1-y2) );

let answer = 0;
for(let i=0; i<p.length; i++) {
let [, le] = p[i];
let max = 1;
for(let j=i+1; j<p.length; j++) {
let [rs, re] = p[j];
if(le<=rs) {
max++;
le = re;
}
}
answer = Math.max(answer, max);
}
return answer;
}

 

이 문제를 보고 어떻게 종료시간 기준으로 정렬하여 그리디로 푸는 것이 답인지 아닌지에 대한 결정을 하는지 궁금합니다.

종료시간 기준하여 그리디로 풀었을때가 정답이 될 것이라다라는 논리가 어떻게 나오게 되는지 궁금합니다.

0

안녕하세요^^

그리디를 익히기 위한 문제이니 영상처럼 그리디로 푸는 것을 꼭 알아두시기 바랍니다.

아래는 반례입니다. 답은 5입니다.

console.log(solution([[12], [23], [35], [66], [77]]));//5