맨땅에 코딩 : 맨코
Home
  • 분류 전체보기 (278)
    • CS (56)
      • Algorithm Theory (6)
      • Computer Architecture (1)
      • Computer Network (17)
      • Database (1)
      • Data Structure (5)
      • Operating System (18)
      • 정보처리기사 (8)
    • PS (111)
      • 백준 (72)
      • 프로그래머스 (27)
      • LeetCode (9)
      • 기타 (3)
    • Develop (51)
      • HTML & CSS (5)
      • JavaScript (23)
      • React JS (3)
      • Node JS (2)
      • TypeScript (5)
      • FrontEnd (11)
    • 무념무상 생각노트 (46)
    • 성장을 위한 도전들 (5)
Home
  • 분류 전체보기 (278)
    • CS (56)
      • Algorithm Theory (6)
      • Computer Architecture (1)
      • Computer Network (17)
      • Database (1)
      • Data Structure (5)
      • Operating System (18)
      • 정보처리기사 (8)
    • PS (111)
      • 백준 (72)
      • 프로그래머스 (27)
      • LeetCode (9)
      • 기타 (3)
    • Develop (51)
      • HTML & CSS (5)
      • JavaScript (23)
      • React JS (3)
      • Node JS (2)
      • TypeScript (5)
      • FrontEnd (11)
    • 무념무상 생각노트 (46)
    • 성장을 위한 도전들 (5)
블로그 내 검색

  • PS/백준

    [ 백준_11256 ] 사탕 ( 그리디 - 자바스크립트 )

    2021. 6. 29.

    by. KimBangg

    문제

    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

    댓글

    관련글

    • [ 백준_17626 ] Four Squares ( DP _ 자바스크립트 ) 2021.07.06
    • [백준_14247] 나무 자르기 ( 그리디 - 자바스크립트 ) 2021.06.30
    • [ 백준 -17609 ] 회문 ( 구현, 투포인터 - 자바스크립트 ) 2021.06.29
    • [ 백준 - 19941 ] 햄버거 분배 ( 그리디 - 자바스크립트 ) 2021.06.29
    맨 위로
  • GitHub
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

블로그 이미지
KimBangg

티스토리툴바