glowing713
Frontend-Deep-Dive
glowing713
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
    • Languages (11)
      • JavaScript ๐Ÿ’› (3)
      • Python ๐Ÿ (4)
      • Java โ˜•๏ธ (3)
      • Swift ๐Ÿงก (1)
    • Computer_Science (1)
      • Computer_Network ๐Ÿ•ธ (1)
    • Web_Frontend (4)
      • Vue.js (1)
    • Problem_Solving (76)
    • Server (1)
      • Spring ๐Ÿ€ (1)
    • AI (2)
      • NLP ๐Ÿ—ฃ (1)
      • AI_Math โž— (1)
    • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ โœŒ (1)
    • ์ƒ๊ฐ์ •๋ฆฌ โœ๐Ÿป (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ปGithub

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • boostcampaitech
  • Algorithm
  • Python
  • BOJ
  • ps
  • ์ด๋ถ„ํƒ์ƒ‰
  • ์™„์ „ํƒ์ƒ‰
  • 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ
  • DP
  • Stack
  • bfs
  • Baekjoon
  • mst
  • ๋™์ ๊ณ„ํš๋ฒ•
  • ์นด์นด์˜ค ๊ธฐ์ถœ
  • binary search
  • c++
  • brute-force
  • Java
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
glowing713

Frontend-Deep-Dive

[BOJ] ๋ฐฑ์ค€ 12865 ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
Problem_Solving

[BOJ] ๋ฐฑ์ค€ 12865 ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)

2020. 3. 12. 20:28

์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋ฌธ์ œ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.


 

 

๐Ÿ’ฃ ๋ฌธ์ œ ์ดํ•ด

 

 

0-1 Knapsack Problem ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์ด๋‹ค.

 

N ๊ฐœ์˜ ๋ฌผ๊ฑด์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๋ฌด๊ฒŒ W , ๊ฐ€์น˜ V ๋ฅผ ๊ฐ€์ง„๋‹ค.

์ตœ๋Œ€ K ๋ฌด๊ฒŒ๋ฅผ ๊ฐ€๋ฐฉ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, ํฌํ•จํ•œ ๋ฌผ๊ฑด์˜ ๊ฐ€์น˜ V ํ•ฉ์˜ ์ตœ๋Œ€๋ฅผ ๊ตฌํ•ด์•ผํ•œ๋‹ค.

 

3ํ•™๋…„ ํ•™๊ธฐ ์ค‘์— ํ’€์–ด๋ณด์•˜์ง€๋งŒ ๊ฐ€๋ฌผ๊ฐ€๋ฌผํ•ด์„œ  ์ด ์™ธ๊ตญ ์œ ํŠœ๋ฒ„์˜ ํ’€์ด ๊ฐ€ ์ƒ๋‹นํžˆ ์œ ์ตํ–ˆ๊ธฐ์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ฐธ๊ณ ํ–ˆ๋‹ค.

 

 

๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

 

 

 

๐Ÿ’ญ ํ’€์ด ๊ณผ์ •

 

 

dp[i][j] = max(dp[i-1][j] , dp[i][j-index] + value)  ์˜ ์ ํ™”์‹์„ ๊ฐ€์ง„๋‹ค.

 

 

1. ๊ฐ€๋ฐฉ ๊ณต๊ฐ„๋ณด๋‹ค ์ด ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ(product[i][1]) ์ด ๋” ํด ๋•Œ๋Š” ํฌํ•จํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์ œ์™ธํ•œ ๋ฌด๊ฒŒ๋กœ ๋Œ€์ฒดํ•œ๋‹ค.

 

2. ๊ฐ€๋ฐฉ ๊ณต๊ฐ„๋ณด๋‹ค ์ด ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ(product[i][1]) ์ด ๋” ์ž‘์„ ๋•Œ๋Š” ํฌํ•จ ํ•  ์ˆ˜๋„, ํฌํ•จํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ๋‘ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ๋”ฐ์ ธ๋ณด์•„ ๋” ํฐ ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•œ๋‹ค.

 

 

 

 

์ž‘์„ฑ ์–ธ์–ด: C++

 

#include <cstdio>
#include <algorithm>    // std::max

int dp[101][100001] = {0, };    // 0-1 knapsack problem DP ๋ฐฐ์—ด
int product[101][3] = {0, };    // 1์—ด์€ ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ, 2์—ด์€ ๋ฌผ๊ฑด์˜ ๊ฐ€์น˜

int main(){
    int sackCnt, sackWeight;
    scanf("%d %d", &sackCnt, &sackWeight);
    
    // ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฐฐ๋‚ญ์˜ ๋ฌผํ’ˆ ์ˆ˜, ๋ฐฐ๋‚ญ์˜ ์ตœ๋Œ€ ๋ฌด๊ฒŒ
    for (int i = 1; i <= sackCnt; ++i) {
        scanf("%d %d", &product[i][1], &product[i][2]);
    }
    
    for (int i = 1; i <= sackCnt; ++i) {
        for (int j = 0; j <= sackWeight; ++j) {
            /* #1# ๊ฐ€๋ฐฉ ๊ณต๊ฐ„๋ณด๋‹ค ์ด ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ(product[i][1]) ์ด ๋” ํด ๋•Œ๋Š” ํฌํ•จํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ
                   ์ด๋ฅผ ์ œ์™ธํ•œ ๋ฌด๊ฒŒ๋กœ ๋Œ€์ฒดํ•œ๋‹ค.
               #2# ๊ฐ€๋ฐฉ ๊ณต๊ฐ„๋ณด๋‹ค ์ด ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ(product[i][1]) ์ด ๋” ์ž‘์„ ๋•Œ๋Š” ํฌํ•จ ํ•  ์ˆ˜๋„, ํฌํ•จํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ
                   ๋‘ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ๋”ฐ์ ธ๋ณด์•„ ๋” ํฐ ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•œ๋‹ค. */
            if (j < product[i][1]) {
                dp[i][j] = dp[i-1][j];
            }else {
                int minusIdx = j - product[i][1];  // ์ด ๋ฌผ๊ฑด์„ ํฌํ•จํ–ˆ์„ ๋•Œ, ๊ฐ€๋ฐฉ์˜ ๋‚จ์€ ๋ฌด๊ฒŒ
                dp[i][j] = std::max(dp[i-1][j], dp[i][minusIdx] + product[i][2]); // ์ด ๋ฌผ๊ฑด์„ ํฌํ•จํ•˜๊ธฐ ์ „๊ณผ ํฌํ•จํ•œ ํ›„ ์ค‘ ๋” ๊ฐ€์น˜๊ฐ€ ํฐ ๊ฒƒ์„ ์„ ํƒ
            }
        }
    }
    
    printf("%d\n", dp[sackCnt][sackWeight]);
    return 0;
}

 

 

 

 

๐Ÿ† ๋ฐฐ์šด ์ 

 

 

0-1 knapsack problem ์ด๋ผ๋Š” ์œ ๋ช…ํ•œ ๋ฌธ์ œ๋ฅผ ํ•™๊ธฐ ์ค‘์— ํ’€์—ˆ์—ˆ๋Š”๋ฐ ๋‹ค์‹œ ํ’€์–ด์„œ ๋งž์ถ”๋‹ˆ ์ƒ๋‹นํžˆ ๋ฟŒ๋“ฏํ–ˆ๋‹ค :D

 

๊ณ„์†ํ•ด์„œ ํ’€๋‹ค๋ณด๋ฉด ์ด๋Ÿฐ ๊ฒฝํ—˜์ด ๋”์šฑ ์Œ“์ด๊ฒ ์ง€..!

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€

'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 11053 ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.04.24
[BOJ] ๋ฐฑ์ค€ 9251 LCS / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.03.14
[BOJ] ๋ฐฑ์ค€ 11051 ์ดํ•ญ ๊ณ„์ˆ˜ 2 / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.03.11
[BOJ] ๋ฐฑ์ค€ 11057 ์˜ค๋ฅด๋ง‰ ์ˆ˜ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.03.09
์™œ ์ •๋‹ต์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ• ๊นŒ? - ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ  (0) 2020.03.06
    'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [BOJ] ๋ฐฑ์ค€ 11053 ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
    • [BOJ] ๋ฐฑ์ค€ 9251 LCS / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
    • [BOJ] ๋ฐฑ์ค€ 11051 ์ดํ•ญ ๊ณ„์ˆ˜ 2 / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
    • [BOJ] ๋ฐฑ์ค€ 11057 ์˜ค๋ฅด๋ง‰ ์ˆ˜ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
    glowing713
    glowing713

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”