๐Ÿ”’Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ’€์ด(js) > ํ”ผ๋กœ๋„

devWarrior 2023. 7. 13. 21:00

๋ฌธ์ œ ๐Ÿ”ฝ

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

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๋‹ค๋ฅธ์‚ฌ๋žŒ ํ’€์ด ๐Ÿ”ฝ

function solution(k, d) {
    const N = d.length
    const visited = new Array(N).fill(0)
    let ans = 0

    function dfs(k, cnt){
        ans = Math.max(cnt, ans)

        for (let j = 0; j < N; j++){
            if (k >= d[j][0] && !visited[j]){
                visited[j] = 1
                dfs(k - d[j][1], cnt + 1)
                visited[j] = 0
            }
        }
    }

    dfs(k, 0)
    return ans;
}

๋‚ดํ’€์ด๐Ÿ”ฝ

1. ์„ฑ๊ณต โญ•  

function solution(k, dungeons) {
    let result = []
    const visited = Array.from(dungeons,()=>false)

    const dfs=(hp,round)=>{
        result.push(round)
        for(let i=0; i<visited.length; i++){
            if(!visited[i]&&hp>=dungeons[i][0]){
                visited[i]=true; 
                dfs(hp-dungeons[i][1],round+1)
                visited[i]=false;
            }
        }
    }
    dfs(k,0)
    return Math.max(...result) 
}

 

๋А๋‚€์ ๐Ÿ”ฝ

๋ณต์žกํ•œ ์žฌ๊ท€ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ฒฝํ—˜์„ ์Œ“์„ ์ˆ˜ ์žˆ์–ด ์ข‹์•˜๋‹ค.