던전 array 순서대로 처음부터 탐색 -> 점점 깊게 들어가는 방식function solution(k, dungeons) { let max = 0; let visit = new Array(dungeons.length).fill(false); function dfs(cur,tired,depth){ visit[cur] = true; tired-=dungeons[cur][1]; for(let i = 0; i =dungeons[i][0])dfs(i,tired,depth+1); } max = Math.max(max,depth); visit[cur] = false; } for(let i = 0 ; i
재귀함수를 이용해 깊이 전부 탐색function solution(numbers, target) { var answer = 0; function dfs(n,sum){ if(n === numbers.length){ if(sum === target) answer++; }else{ dfs(n+1,sum+numbers[n]); dfs(n+1,sum-numbers[n]); } } dfs(0,0); return answer;}
js를 이용하다보면 2차원 배열을 생각보다 선언하기 힘들다는 것을 느낄 것이다. 이 때 추천하는 방법은 2가지가 있는데, 편한 방법을 골라서 사용하면 된다.1. Array.from()을 이용const dp = Array.from({length: 2}, () => Array(10)); // 2x10 배열을 완성할 수 있다. 2. 스프레드 연산자(...) 이용[...Array(n)].map(x => new Array(n));
every()조건을 만족하지 않는 값이 발견되는 즉시 순회 중단. -> false 반환let i = [1,2,3,4,5]console.log(i.every(x => x%2 === 0) //falsesome()조건을 만족하는 값이 발견되는 즉시 순회 중단. -> true 반환let i = [1,2,3,4,5]console.log(i.some(x => x%2 === 0) //true
String.prototype.charAt()문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환let str = "151"str.charAt(0) //"1"str.charAt(1) //"5"String.prototype.charCodeAt()원하는 아스키코드의 정수값을 반환str.charCodeAt(index); //index 기본값은 0'ABC'.charCodeAt(0); // returns 65String.fromCharCode()정수로부터 문자열 생성해 반환String.fromCharCode(num1[, ...[, numN]]);String.fromCharCode(65, 66, 67); // "ABC"
1~N 사이의 숫자중 소수를 구하는 문제가 있습니다.이때let num = [];let N = 100;for(let i =1; i아래의 방법을 통해 O(N)으로 구할 수 있습니다.하지만 N이 커지면 커질수록 시간이 오래걸립니다.그렇기 때문에 에라토스테네스의 체 방법으로 소수를 구하면 빠릅니다.이 방법의 핵심은 n의 배수는 무조건 소수가 될 수 없다!let N = 100;let arr = [];for(let i = 0;i x); //=> 소수만 남아있다.