Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 철학
- 컴퓨터과학
- 파이썬
- 문자열처리
- node배포
- Search Algorithm
- 알고리즘
- computerscience
- CS
- AWS
- multer-s3
- Hill Climbing
- Simulated Annealing
- 배포
- lightsailor
- Local Search
- 코드
- 문자열
- 컴퓨터공학
- typescript
- node.js
Archives
- Today
- Total
지식의모듈화
[DFS][Javascript] 양궁대회 본문
function solution(n, info) {
let visited= new Array(info.length).fill(false);
let scoreArr= new Array(info.length).fill(0);
let answer =0;
let answerarr;
function dfs( score, current){
let currentDifference=compareScore(info,score)
if(answer<currentDifference){
answer=currentDifference,
answerarr=score;
}
for(let i=info.length-1; i>=0;i--){
if(!visited[i] && current>= info[i]+1){
visited[i]=true;
dfs([...score.slice(0,i),info[i]+1,...score.slice(i+1)], current-(info[i]+1))
visited[i]=false;
}
}
}
function compareScore(arr1,arr2){
let scorePeach=0, scoreRyan=0;
for(let i=0; i<arr1.length;i++){
if(arr1[i]===arr2[i]){
if(arr1[i]===0)
continue;
else{
scorePeach+=(10-i)
}
}
if(arr1[i] < arr2[i]){
scoreRyan+=(10-i);
}
else{
scorePeach+=(10-i);
}
}
return scoreRyan-scorePeach;
}
dfs(scoreArr, n);
if(answerarr==undefined){
return [-1];
}
else{
let check=0;
answerarr.forEach(e=>{ if(e!==0) check+=e})
if(n-check>0){
answerarr[scoreArr.length-1]+=n-check
}
return answerarr;
}
}
dfs문제이다...
dfs([...score.slice(0,i),info[i]+1,...score.slice(i+1)], current-(info[i]+1))
를 활용하게 되면 dfs에서 initialize할 필요없이 인자로만 전부 넘길 수 있다.
'PS > 프로그래머스' 카테고리의 다른 글
[JS][구현]쿼드압축 후 개수 세기 (0) | 2023.09.24 |
---|---|
[JS][Lv3][DP] 정수삼각형 (0) | 2023.09.24 |
[구현][JS] 주차요금계산 (0) | 2022.07.28 |
[구현][Javascript] 오픈채팅방 (0) | 2022.07.28 |
[JS][소수]k진수에서 소수 개수 구하기 (0) | 2022.07.28 |