문제 🔽
https://school.programmers.co.kr/learn/courses/30/lessons/87946
다른사람 풀이 🔽
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)
}
느낀점🔽
복잡한 재귀함수에 대한 경험을 쌓을 수 있어 좋았다.
'Javascript' 카테고리의 다른 글
프로그래머스 코딩테스트 풀이(js) > 카드뭉치(lv1) (0) | 2023.07.18 |
---|---|
프로그래머스 코딩테스트 풀이(js) > 문자열 나누기(lv1) (0) | 2023.07.17 |
프로그래머스 코딩테스트 풀이(js) > 할인 행사 (0) | 2023.07.10 |
프로그래머스 코딩테스트 풀이(js) > 기능개발 (0) | 2023.07.09 |
프로그래머스 코딩테스트 풀이(js) > 할인 행사 (0) | 2023.07.06 |