문제 링크
풀이
let [n, ...ropes] = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
ropes = ropes.map(i => +i);
ropes.sort((a, b) => a-b);
let min = ropes[0]*n;
for (let i=1; i<n; i++) {
weight = ropes[i]*(n-i);
if (min < weight) min = weight;
}
console.log(min);
사용된 로프 중에 단 한 개라도 중량을 견딜 수 없어서는 안 되므로, 로프들을 사용하여 들어올릴 수 있는 물체의 최대 중량은 (버틸 수 있는 최대 중량이 가장 낮은 로프) X (로프의 개수)와 같다.
로프들을 오름차순으로 정렬한 뒤, 모든 로프를 사용하였을 때 들어올릴 수 있는 최대 중량으로 min을 초기화한다. 그리고 가장 버틸 수 있는 최대 중량이 낮은 로프부터 하나씩 배제하면서 최대 중량을 구하고, 그 값이 min보다 작을 때마다 min을 갱신한다.
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 1021] 회전하는 큐 with Node.js (0) | 2021.04.14 |
---|---|
[백준 10816] 숫자 카드 2 with Node.js (0) | 2021.04.13 |
[백준 1436] 영화감독 숌 with Node.js (0) | 2021.04.11 |
[백준 1018] 체스판 다시 칠하기 with Node.js (0) | 2021.04.11 |
[백준 2108] 통계학 with Python (0) | 2021.04.11 |