ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์™„์ „๋ฒ”์ฃ„

2025. 2. 21. 00:19ยท๐Ÿ”’Algorithm

๐Ÿงฉ๋ฌธ์ œ๋งํฌ

https://school.programmers.co.kr/learn/courses/30/lessons/389480

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

๐Ÿงฉ๋ฌธ์ œํ’€์ด

โž•dfs๋กœ ์ ‘๊ทผ -> ์‹คํŒจ ( ์‹œ๊ฐ„์ดˆ๊ณผ )

dfs๋กœ ํ‘ผ ๋ฌธ์ œํ’€์ด๋‹ค. ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค.

function solution(info, n, m) {
    let dp = Array.from({ length: info.length + 1 }, () => {
        return Array(m).fill(Infinity);
    });

    dp[0][0] = 0;

    for (let r = 1; r <= info.length; r++) {
        let [aScore, bScore] = info[r - 1];
        for (let c = 0; c < m; c++) {
            dp[r][c] = Math.min(dp[r - 1][c] + aScore, dp[r][c]);

            if (c + bScore < m) {
                dp[r][c + bScore] = Math.min(dp[r - 1][c], dp[r][c + bScore]);
            }
        }
    }
    let min = Infinity;

    dp[info.length].forEach((v) => {
        if (v < n) {
            min = Math.min(min, v);
        }
    });

    return min === Infinity ? -1 : min;
}

โž•dp๋กœ ์ ‘๊ทผ -> ์„ฑ๊ณต

2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ์ฑ„์šฐ๋ฉด ๋œ๋‹ค. ๊ฐ’์„ ์ฑ„์šธ๋•Œ๋Š” ์ ํ™”์‹์„ ์ด์šฉํ•ด์„œ ์ฑ„์šฐ๊ณ  ๊ฐ’์„ ์ฑ„์šด 2์ฐจ์›๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ํ–‰์˜ ๊ฐ’๋“ค ์ค‘์— n๋ฏธ๋งŒ์ด๋ฉด์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ return ํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค. 

2์ฐจ์›๋ฐฐ์—ด์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค. ์ดํ•ด๋ฅผ ๋•๊ธฐ์œ„ํ•ด ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ Test case๋ฅผ ์ ์šฉํ•˜์—ฌ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ( info = [[1,2],[2,3],[2,1]], n=4, m=4 )

 

์œ„์™€ ๊ฐ™์€ 2์ฐจ์› ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๋ฉด b์˜ ํ”์ ๊ฐฏ์ˆ˜๊ฐ€ m์„ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๋Š” ์ƒ๊ธฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ a์กฐ๊ฑด๋งŒ์„ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค.

2์ฐจ์› ๋ฐฐ์—ด ์„ค๊ณ„๋Š” ์œ„์™€ ๊ฐ™์ด ์ง„ํ–‰ํ•˜๊ณ  ์ ํ™”์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ์•„๋ž˜์—์„œ ๋งํ•˜๋Š” `aScore`, `bScore`๋Š” ๊ฐ๊ฐ info[r-1]๋ฅผ a๊ฐ€ ํ›”์ณค์„๋•Œ ํ”์ ๊ฐฏ์ˆ˜, b๊ฐ€ ํ›”์ณค์„๋•Œ ํ”์ ๊ฐฏ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 
  • dp[r-1][c] ์—์„œ a ๋ฅผ ์„ ํƒํ–ˆ์„ ๋•Œ => dp[r][c] = Math.min(dp[r][c-1] + aScore, dp[r][c] )
  • dp[r-1][c] ์—์„œ b ๋ฅผ ์„ ํƒํ–ˆ์„ ๋•Œ => dp[r][c+bScore] = Math.min(dp[r-1][c], dp[r][c+bScore] )

2์ฐจ์›๋ฐฐ์—ด๊ณผ ์ ํ™”์‹์„ ๊ณ ๋ คํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

function solution(info, n, m) {
    let dp = Array.from({ length: info.length + 1 }, () => {
        return Array(m).fill(Infinity);
    });

    dp[0][0] = 0;

    for (let r = 1; r <= info.length; r++) {
        let [aScore, bScore] = info[r - 1];
        for (let c = 0; c < m; c++) {
            dp[r][c] = Math.min(dp[r - 1][c] + aScore, dp[r][c]);

            if (c + bScore < m) {
                dp[r][c + bScore] = Math.min(dp[r - 1][c], dp[r][c + bScore]);
            }
        }
    }
    let min = Infinity;

    dp[info.length].forEach((v) => {
        if (v < n) {
            min = Math.min(min, v);
        }
    });

    return min === Infinity ? -1 : min;
}

 

 

'๐Ÿ”’Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ํƒ๋ฐฐ ์ƒ์ž ๊บผ๋‚ด๊ธฐ  (0) 2025.02.25
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์œ ์—ฐ๊ทผ๋ฌด์ œ  (0) 2025.02.23
๋ฐฑ์ค€[JS] > 1920๋ฒˆ ์ˆ˜ ์ฐพ๊ธฐ  (0) 2025.02.19
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์ง€๊ฒŒ์ฐจ์™€ ํฌ๋ ˆ์ธ  (0) 2025.02.16
ํ”„๋กœ๊ทธ๋ž˜๋จธ[JS] > ์„œ๋ฒ„ ์ฆ์„ค ํšŸ์ˆ˜  (1) 2025.02.16
'๐Ÿ”’Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ํƒ๋ฐฐ ์ƒ์ž ๊บผ๋‚ด๊ธฐ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์œ ์—ฐ๊ทผ๋ฌด์ œ
  • ๋ฐฑ์ค€[JS] > 1920๋ฒˆ ์ˆ˜ ์ฐพ๊ธฐ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์ง€๊ฒŒ์ฐจ์™€ ํฌ๋ ˆ์ธ
devWarrior
devWarrior
  • devWarrior
    devWarrior
    devWarrior
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐ŸงฉDev (263)
      • โญFE (34)
      • ๐Ÿ”’Algorithm (155)
      • โž•Etc. (11)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
    • ๊ด€๋ฆฌ
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์‹ค๋ฒ„1
    ์‹ค๋ฒ„3
    BFS
    nodejs
    FE
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ๊ณจ๋“œ5
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์ž์Šค
    ์‹ค๋ฒ„2
    Algorithm
    Easy
    ๋ฐฑ์ค€
    dp
    Lv2
    ํ”„๋ก ํŠธ์—”๋“œ
    DFS
    react
    ์˜ค๋ธ”์™„
    ์ฝ”ํ…Œ
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    node.js
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    ์‹ค๋ฒ„4
    ๊ทธ๋ฆฌ๋””
    javascript
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    leetcode
    js
    ๊ตฌํ˜„
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
devWarrior
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์™„์ „๋ฒ”์ฃ„
์ƒ๋‹จ์œผ๋กœ

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