본문 바로가기

부분집합3

[Algorithm] 중복순열 구하기(DFS) ❐ 중복순열 구하기 ▶︎ 문제 1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열하는 방법을 모두 출력합니다. ▷ 입력 예제 3 2 ▶︎ 출력 예제 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 ▷ 문제설명 일반적으로 순열은 서로 다른 n개 중 r개를 순서를 고려하여 나열하는 것을 말한다. 한 번 고른 것은 다시 고를 수 없는 것이 원칙이나, 중복순열의 경우에는 특별히 중복을 허용한다. 문제는 3까지의 번호가 적힌 구슬에서 두 개를 뽑아 중복을 허락하여 나열하는 경우의 수를 구하라고 한다. 즉, 주머니에 1부터 3까지 적혀있는 구슬 세개가 들어있다고 가정했을 때 ① 주머니에 들어있는 세개의 구슬 중 하나를 뽑아서 첫번째 자리 수를 정하고 ② 뽑은.. 2022. 10. 12.
[Algorithm] 합이 같은 부분집합(DFS) ❐ 합이 같은 부분집합 ▶︎ 문제 N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 "YES"를 출력하고, 그렇지 않으면 "NO"를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어야 합니다. 예를 들어 {1, 3, 5, 6, 7, 10} 이 입력되면 {1, 3, 5, 7} = {6, 10} 으로 두 부분집합의 합이 16으로 같은 경우가 존재하는 것을 알 수 있습니다. ▷ 입력 예제 1 3 5 6 7 10 ▶︎ 출력 예제 YES ▷ 내 답안 function solution(arr) { let answer = "NO"; let c.. 2022. 10. 9.
[Algorithm] 부분집합 구하기(DFS) ❐ 부분집합 구하기 ▶︎ 문제 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램을 작성하시오. 단, 공집합은 출력하지 않습니다. ▷ 입력 예제 3 ▶︎ 출력 예제 1 2 3 1 2 1 3 1 2 3 2 3 ▷ 내 답안 function solution(n) { let answer = ""; let ch = Array.from({ length: n + 1 }, () => 0); function DFS(L) { if (L > n) { ch.forEach((ele, i) => { if (ele === 1) { answer = answer + i.toString(); } }); answer = ""; return; } else { ch[L] = 1; DFS(L + 1); .. 2022. 10. 8.