From e2fbcd85fd232e07520c6df17a00a72e1551bd01 Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Sun, 1 Feb 2026 23:56:25 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A1=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=98=EB=A8=B8=EC=8A=A4=2086053=20-=20=EA=B8=88=EA=B3=BC=20?= =?UTF-8?q?=EC=9D=80=20=EC=9A=B4=EB=B0=98=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...64\353\260\230\355\225\230\352\270\260.js" | 38 +++++++++++++++++++ Programmers/README.md | 1 + 2 files changed, 39 insertions(+) create mode 100644 "Programmers/Level3/86053_\352\270\210\352\263\274_\354\235\200_\354\232\264\353\260\230\355\225\230\352\270\260.js" diff --git "a/Programmers/Level3/86053_\352\270\210\352\263\274_\354\235\200_\354\232\264\353\260\230\355\225\230\352\270\260.js" "b/Programmers/Level3/86053_\352\270\210\352\263\274_\354\235\200_\354\232\264\353\260\230\355\225\230\352\270\260.js" new file mode 100644 index 0000000..11b35e1 --- /dev/null +++ "b/Programmers/Level3/86053_\352\270\210\352\263\274_\354\235\200_\354\232\264\353\260\230\355\225\230\352\270\260.js" @@ -0,0 +1,38 @@ +/* +⭐️ 문제 정보 ⭐️ +문제 : 86053 - 금과 은 운반하기 +레벨 : Level 3 +링크 : https://school.programmers.co.kr/learn/courses/30/lessons/86053 +*/ + +// ANCHOR 2026.02.01 풀이 +// 이분탐색 +function solution(a, b, g, s, w, t) { + // time 시간 안에 모든 도시에서 필요한 광물들을 운반할 수 있는지를 확인 + function check(time) { + const cityCount = g.length; + let gold = 0, silver = 0, total = 0; + for (let i = 0; i < cityCount; i++) { + // time 시간 안에 "운반"할 수 있는 최대 횟수 + const maxDeliveries = Math.floor(time / (2 * t[i])) + (time % (2 * t[i]) >= t[i] ? 1 : 0); + // time 시간 안에 운반할 수 있는 광물의 최대 양 + const cap = maxDeliveries * w[i]; + + gold += Math.min(g[i], cap); + silver += Math.min(s[i], cap); + total += Math.min(g[i] + s[i], cap); + } + + return gold >= a && silver >= b && total >= a + b; + } + + // 이분탐색 + let left = 0, right = 10 ** 15; + while (left < right) { + const mid = Math.floor((right + left) / 2); + if (check(mid)) right = mid; + else left = mid + 1; + } + + return left; +} \ No newline at end of file diff --git a/Programmers/README.md b/Programmers/README.md index b86082c..fb90a10 100644 --- a/Programmers/README.md +++ b/Programmers/README.md @@ -62,6 +62,7 @@ | 77486 | 다단계 칫솔 판매 | [77486_다단계_칫솔_판매.js](Level3/77486_다단계_칫솔_판매.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/77486) | | 77885 | 2개 이하로 다른 비트 | [77885_2개_이하로_다른_비트.js](Level2/77885_2개_이하로_다른_비트.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/77885) | | 81303 | 표 편집 | [81303_표_편집.js](Level3/81303_표_편집.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/81303) | +| 86053 | 금과 은 운반하기 | [86053_금과_은_운반하기.js](Level3/86053_금과_은_운반하기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/86053) | | 87390 | n^2 배열 자르기 | [87390_n^2_배열_자르기.js](Level2/87390_n^2_배열_자르기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/87390) | | 92334 | 신고 결과 받기 | [92334_신고_결과_받기.js](Level1/92334_신고_결과_받기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/92334) | | 92341 | 주차 요금 계산 | [92341_주차_요금_계산.js](Level2/92341_주차_요금_계산.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/92341) |