알고리즘 4

17개 문제 풀이 모음

해당 pdf의 17개 문제를 풀었다 // !세 수 중 최솟값 // let input1 = [6, 5, 11]; // let min = input1[0]; // input1.forEach((ele) => { // if (ele < min) min = ele; // }); // console.log(min); // 아래처럼 해도 됨 // console.log(Math.min(...input1)); // !삼각형 판별하기 // let input2 = [6, 7, 11]; // // let input2 = [13, 33, 17]; // max = Math.max(...input2); // let total = input2[0] + input2[1] + input2[2]; // let remainder = tot..

순열(DFS 깊이우선탐색)

1부터 n까지의 숫자중 m개를 순열한다면 let arr = ["rock", "scissors", "paper"]; function rockPaperScissors(arr, n) { let answer = []; function DFS(L, S) { if (L === 0) { answer.push(S); return; } for (let i = 0; i < arr.length; i++) { if (!S.includes(arr[i])) DFS(L - 1, S.concat(arr[i])); //이건 순열 // DFS(L - 1, S.concat(arr[i])); //이건 중복 순열 } } DFS(n, []); return answer; } console.log(rockPaperScissors(arr, 3));..

중복순열(DFS 깊이우선탐색)

맨 아래에 다듬은 수정 코드 업데이트(배열 주어졌을때랑 안주어졌을때랑 조금 달라서 같은 느낌으로 통일시킴) 1부터 n까지의 숫자중 m개를 중복순열한다면 function permutationWithRepetition(n, m) { let arr = new Array(m).fill(0); // let arr = Array.from({ length: m }, () => 0); // 이렇게 해도 됨 let answer = []; function DFS(L) { if (L === m) { answer.push(arr.slice()); } else { for (let i = 1; i

소수 판별

소수는 약수가 1과 본인 자신만을 가짐 1. 반복문 사용 (1과 본인 제외 약수가질시 false) function isPrime(num) { if (num i; i++) { if (num % i === 0) { return false; } } return true; } 2. 제곱근 사용 예를들어 16의 약수는 1, 2, 4, 8, 16이 있는데 16은 1*16, 2*8, 4*4이다 제곱근인 4까지만 계산해보면 그 뒤는 8*2, 16*1처럼 자리 위치만 반전되는것이라 제곱근까지만 계산해도 된다 function isPrime(num) { if (num