본문 바로가기

js 알고리즘15

[JS] 코딩 테스트 문제 : 바둑이 승차 [DFS] 문제 : 바둑이 승차(DFS) 문제 설명 철수는 그의 바둑이들을 데리고 시장에 가려고 한다. 그런데 그의 트럭은 C킬로그램 넘게 태울수가 없다. 철수는 C를 넘지 않으면서 그의 바둑이들을 가장 무겁게 태우고 싶다. N마리의 바둑이와 각 바둑이의 무게 W가 주어지면, 철수가 트럭에 태울 수 있는 가장 무거운 무게를 구하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 자연수 C(1 2024. 1. 28.
[JS] 코딩 테스트 문제 : 합이 같은 부분집합 [DFS] 문제 : 합이 같은 부분집합(DFS) 문제 설명 N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합(Disjoint Set)이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어야 합니다. 예를 들어 {1, 3, 5, 6, 7, 10}이 입력되면 {1, 3, 5, 7} = {6, 10} 으로 두 부분집합의 합이 16으로 같은 경우가 존재하는 것을 알 수 있다. ▣ 입력설명 첫 번째 줄에 자연수 N(1 a + b, 0); let n = arr.length; // 배열의 인덱스를 의미할 파.. 2024. 1. 24.
[JS] 코딩 테스트 문제 : 부분 집합 구하기 [DFS] 문제 : 부분집합 구하기(DFS) 문제 설명 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 자연수 N(1 0); // 현재 원소 L 값이 현재 원소값 L 이 n + 1 이 되는 경우 재귀함수를 종료 function DFS(L) { if (L === n + 1) { let tmp = ""; // ch[L] 값이 1인 경우 그 배열의 인덱스값을 문자열(tmp)에 추가하며 for (let i = 1; i 0) answer.push(tmp.trim()); } // 체크 배열에 L번째(ch[L]) 값이 0인 경우와 1인 경우로 나누어 재귀 함수 호출 else { ch[L] = 1; DFS(L + 1); ch[L] = 0; DFS.. 2024. 1. 23.