[JS][백준]6068_시간 관리하기
Algorithm/BaeKJoon

[JS][백준]6068_시간 관리하기

문제 번호

 

6068번: 시간 관리하기

성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1<=N<=1000) 숫자를 매겼다. (우유를 짜고, 마굿간을 치우고, 담장을 고치는 등의) 존의 시간을 효율적

www.acmicpc.net

 

 

알고리즘 분류

 

문제 풀이

 표기된 난이도에 비해서 매우 쉬웠던 문제다. 

우선 입력받은 작업들을 마감시간이 빠른 순서로 정렬해준다.

function main(){
  let works = input.slice(1).map(_ => _.split(' ').map(Number));  // 필요시간, 마감시간.
  works.sort((a,b) => {
    let A = a[1];
    let B = b[1];
    if(A < B) return -1;
    else if(A > B) return 1;
    return 0;
  })  
  sol(works);
}

 

 이제 모든 작업이 마감시간 안에 끝날 수 있는지 판단해야 한다. 마감시간이 빠른 순서로 정렬해 두었기 때문에 작업에 소요되는 시간을 누적으로 더하면서 마감시간 이전에 끝낼 수 있는지 확인한다. 이 과정을 진행하면서 누적된 작업시간과 마감시간의 차이가 최소가 될 때를 기억해둔다. 이 값이 '존'이 최대한 늦게 일어날 수 있는 시간이다. 

 누적시간이 마감시간을 넘기면 해당 일들을 제때 진행할 수 없다는 뜻이다. 반대로 누적시간이 마감시간을 넘기지 않으면 누적시간과 마감시간의 차이만큼은 늦게 일어나도 된다. (눈뜨자마자 모든일을 연속해서 처리한다고 보자)

function sol(works){
  let answer = Infinity;

  let t = 0;
  for(let i=0; i<works.length; i++) {
    let [time, deadline] = works[i];
    t += time;
    if(t > deadline) return console.log(answer = -1);
    if(answer > deadline - t) answer = deadline - t
  }
  return console.log(answer);
}

 

전체 코드

/**
 * 먼저 끝내야 하는 순서로 정렬.
 */

const input = require('fs').readFileSync('input.txt').toString().trim().split('\n');
const N = +input[0];

function sol(works){
  let answer = Infinity;

  let t = 0;
  for(let i=0; i<works.length; i++) {
    let [time, deadline] = works[i];
    t += time;
    if(t > deadline) return console.log(answer = -1);
    if(answer > deadline - t) answer = deadline - t
  }
  return console.log(answer);
}
function main(){
  let works = input.slice(1).map(_ => _.split(' ').map(Number));  // 필요시간, 마감시간.
  works.sort((a,b) => {
    let A = a[1];
    let B = b[1];
    if(A < B) return -1;
    else if(A > B) return 1;
    return 0;
  })  
  sol(works);
}
main();

특이사항

 

 

'Algorithm > BaeKJoon' 카테고리의 다른 글

[JS][백준]14600_샤워실 바닥 깔기 (Small)  (0) 2022.05.25
[JS][백준]15724_주지수  (0) 2022.05.18
[JS][백준]17845_수강 과목  (0) 2022.05.17
[JS][백준]14503_로봇 청소기  (0) 2022.05.16
[JS][백준]15566_개구리 1  (0) 2022.05.13