몸과 마음이 건전한 SW 개발자

Softeer [Level 3] [한양대 HCPC 2023] Pipelined {언어 : JavaScript} 본문

알고리즘

Softeer [Level 3] [한양대 HCPC 2023] Pipelined {언어 : JavaScript}

스위태니 2024. 11. 1. 14:39

문제 링크

https://softeer.ai/practice/9496

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

정답 코드

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
const inputData = [];
rl.on('line', (line) => {
    inputData.push(line.split(" ").map((e) => Number(e)));
}).on('close', () => {
    const n = inputData[0][0];
    const processes = inputData[1];

    // 오름차순 정렬
    processes.sort((a, b) => a - b);
    const answer = processes[n-1] + n - 1;
    console.log(answer);
    process.exit(0);
});

풀이 방법

  1. 단순하게 처음 진입하는 i번째의 자동차는 단순하게 1/si이다.
    • 예를들어 n이 5이고 자동차가 각각 [20, 1, 50, 10000]인 경우
    • 처음 시작하는 차의 process 구간은 각각 0이상 1/20이하, 0이상 1이하, 0이상 1/50이하, 0이상 1/10000이하이다.
  2. 따라서 처음 시작할 때 겹치지 않게 배치하면 결국 마지막까지 겹치지 않는다.
  3. 겹치지 않게 하기 위해서 오름차순 정렬을 해주고 (사실 이미 정렬 되어 있을 수 있다.)
  4. 가장 시간이 오래 걸리는 processes의 n-1번째 인덱스의 값과 n번 겹치지 않게 했으므로 n을 더해주고 -1을 빼주면 끝!
    • -1을 하는 이유는 processes는 시작하자마자 1초를 사용했기 때문이다. (중복)

느낀점

  • 어떤 알고리즘을 사용했다고 말하기 어렵다.