-
문제
https://www.acmicpc.net/problem/11256
11256번: 사탕
당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰
www.acmicpc.net
문제를 이해했는지?
각 상자의 넓이와 높이, 그리고 보내고자 하는 사탕의 개수가 주어 졌을 때 포장 가능한 최소한의 박스 수를 출력하시오.
풀이방법 - 그리디
function solution() { let count = 0; let sum_weight = 0; const new_box = []; // 가로 * 세로로 박스가 담을 수 있는 사탕의 수를 계산 box_sizes.forEach((each) => { new_box.push(each[0] * each[1]); }); // 내림차순으로 정렬 new_box.sort((a, b) => b - a); for (let i = 0; i < new_box.length; i++) { sum_weight += new_box[i]; count += 1; // 박스의 크기로 j보다 많이 담을 수 있으면 개수를 출력 if (sum_weight >= candies) { return console.log(count); } } } const [candies, box_count] = [20, 5]; const box_sizes = [ [3, 4], [2, 5], [1, 8], [3, 3], [2, 5], ]; solution();
아래 코드는, 주어진 개수와 정확히 맞추도록 설계한 알고리즘이다. 궁금해서 더 짜본게 아니라 문제 이해를 ㅎㅎ..
function solution() { let count = 0; let sum_weight = 0; const new_box = []; box_sizes.forEach((each) => { new_box.push(each[0] * each[1]); }); new_box.sort((a, b) => b - a); for (let i = 0; i < new_box.length; i++) { sum_weight += new_box[i]; count += 1; if (sum_weight > candies) { sum_weight -= new_box[i - 1]; count -= 1; continue; } if (sum_weight === candies) { return console.log(count); } } } const [candies, box_count] = [20, 5]; const box_sizes = [ [3, 4], [2, 5], [1, 8], [3, 3], [2, 5], ]; solution();
'PS > 백준' 카테고리의 다른 글
[ 백준_17626 ] Four Squares ( DP _ 자바스크립트 ) (0) 2021.07.06 [백준_14247] 나무 자르기 ( 그리디 - 자바스크립트 ) (0) 2021.06.30 [ 백준 -17609 ] 회문 ( 구현, 투포인터 - 자바스크립트 ) (3) 2021.06.29 [ 백준 - 19941 ] 햄버거 분배 ( 그리디 - 자바스크립트 ) (0) 2021.06.29 [ 백준_6987 ] 월드컵 ( 구현 - 자바스크립트 ) (0) 2021.06.28 댓글