From 725f7a9eef9b0ba2521cdb4dff332b1485378ed9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AA=85=EA=B8=B0?= Date: Fri, 23 May 2025 00:25:20 +0900 Subject: [PATCH] 1092 --- jungmyunggi/1092.js | 59 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 jungmyunggi/1092.js diff --git a/jungmyunggi/1092.js b/jungmyunggi/1092.js new file mode 100644 index 0000000..7c53620 --- /dev/null +++ b/jungmyunggi/1092.js @@ -0,0 +1,59 @@ +const readline = require("readline"); +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +// 크레인 N대가 있음 +// 1분에 상자 1개씩 실을수있음 +// 모든 크레인은 동시에 움직임 +// 크레인에는 무게제한이 있음 +// 모든 상자를 실을때 걸리는 최소시간 구하기 + +let N; +let cranes; +let M; +let boxes; + +rl.on("line", (line) => { + if (!N) N = Number(line); + else if (!cranes) cranes = line.split(" ").map(Number); + else if (!M) M = Number(line); + else { + boxes = line.split(" ").map(Number); + solution(N, cranes, M, boxes); + rl.close(); + } +}); + +function solution(N, cranes, M, boxes) { + cranes.sort((a, b) => b - a); + boxes.sort((a, b) => b - a); + + if (cranes[0] < boxes[0]) { + console.log(-1); + return; + } + + let time = 0; + let visited = Array(M).fill(false); + let count = 0; + + while (count < M) { + let boxIndex = 0; + + for (let i = 0; i < N; i++) { + while (boxIndex < M) { + if (!visited[boxIndex] && cranes[i] >= boxes[boxIndex]) { + visited[boxIndex] = true; + count++; + boxIndex++; + break; + } + boxIndex++; + } + } + time++; + } + console.log(time); +}