Programmers [Programmers] 다단계 칫솔 판매 문제 - (javascript) - 728x90 문제 이름 : 다단계 칫솔 판매 <<< 문제 내용 >>>문제 내용이 길어 링크로 첨부합니다.https://programmers.co.kr/learn/courses/30/lessons/77486 function solution(enroll, referral, seller, amount) { let graph = Array.from(Array(enroll.length), () => Array()); let money = Array.from(Array(enroll.length), () => Array()); // 저는 bfs 형식을 사용했지만 단방향 상승밖에 없기 때문에 // dfs를 사용하여도 전혀 상관 없습니다. const upToCenter = (name, amount) => { const startIdx = enroll.indexOf(name); let queue = [[startIdx, amount]]; while (queue.length) { let [next, amount] = queue.shift(); const tempMoney = Math.floor(amount * 0.1); money[next] = Number(money[next]) + amount - tempMoney; /* 중요한건 백트래킹처럼 가지치기를 해야합니다. 상승하다보면 0원만 주게되는 경우가 생길땐 탐색을 종료하도록 해야 시간초과가 나지 않습니다. */ if (tempMoney === 0) break; if (graph[next].length) { queue.push([graph[next][0], tempMoney]); } } }; referral.forEach((el, idx) => { const temp = enroll.indexOf(el); if (temp >= 0) graph[idx].push(temp); }); seller.forEach((el, idx) => { upToCenter(el, amount[idx] * 100); }); return money.map((el) => (el.length !== undefined ? 0 : el)); } 도움이 되셨다면 공감 부탁드립니다. 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기MoveRoad's Factory 저작자표시 Contents 당신이 좋아할만한 콘텐츠 [Programmers] 가장 먼 노드 문제 - (javascript) 2022.05.05 [Programmers] 이중우선순위큐 문제 - (javascript) 2022.05.03 [Programmers] [1차] 추석 트래픽 문제 - (javascript) 2022.05.02 [Programmers] 기능개발 문제 - (javascript) 2022.04.24 댓글 0 + 이전 댓글 더보기