Skip to content

Commit e2fbcd8

Browse files
committed
💡 프로그래머스 86053 - 금과 은 운반하기
1 parent 9022fd4 commit e2fbcd8

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
⭐️ 문제 정보 ⭐️
3+
문제 : 86053 - 금과 은 운반하기
4+
레벨 : Level 3
5+
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/86053
6+
*/
7+
8+
// ANCHOR 2026.02.01 풀이
9+
// 이분탐색
10+
function solution(a, b, g, s, w, t) {
11+
// time 시간 안에 모든 도시에서 필요한 광물들을 운반할 수 있는지를 확인
12+
function check(time) {
13+
const cityCount = g.length;
14+
let gold = 0, silver = 0, total = 0;
15+
for (let i = 0; i < cityCount; i++) {
16+
// time 시간 안에 "운반"할 수 있는 최대 횟수
17+
const maxDeliveries = Math.floor(time / (2 * t[i])) + (time % (2 * t[i]) >= t[i] ? 1 : 0);
18+
// time 시간 안에 운반할 수 있는 광물의 최대 양
19+
const cap = maxDeliveries * w[i];
20+
21+
gold += Math.min(g[i], cap);
22+
silver += Math.min(s[i], cap);
23+
total += Math.min(g[i] + s[i], cap);
24+
}
25+
26+
return gold >= a && silver >= b && total >= a + b;
27+
}
28+
29+
// 이분탐색
30+
let left = 0, right = 10 ** 15;
31+
while (left < right) {
32+
const mid = Math.floor((right + left) / 2);
33+
if (check(mid)) right = mid;
34+
else left = mid + 1;
35+
}
36+
37+
return left;
38+
}

Programmers/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
| 77486 | 다단계 칫솔 판매 | [77486_다단계_칫솔_판매.js](Level3/77486_다단계_칫솔_판매.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/77486) |
6363
| 77885 | 2개 이하로 다른 비트 | [77885_2개_이하로_다른_비트.js](Level2/77885_2개_이하로_다른_비트.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/77885) |
6464
| 81303 | 표 편집 | [81303_표_편집.js](Level3/81303_표_편집.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/81303) |
65+
| 86053 | 금과 은 운반하기 | [86053_금과_은_운반하기.js](Level3/86053_금과_은_운반하기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/86053) |
6566
| 87390 | n^2 배열 자르기 | [87390_n^2_배열_자르기.js](Level2/87390_n^2_배열_자르기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/87390) |
6667
| 92334 | 신고 결과 받기 | [92334_신고_결과_받기.js](Level1/92334_신고_결과_받기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/92334) |
6768
| 92341 | 주차 요금 계산 | [92341_주차_요금_계산.js](Level2/92341_주차_요금_계산.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/92341) |

0 commit comments

Comments
 (0)