Algorithm/Inflearn

Algorithm/Inflearn

[알고리즘/인프런] 합이 같은 부분집합

문제 N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어 합니다. 예를 들어 {1, 3, 5, 6, 7, 10}이 입력되면 {1, 3, 5, 7} = {6, 10} 으로 두 부분집합의 합이 16으로 같은 경우가 존재하는 것을 알 수 있다. 풀이 다음에 유의하여 풀었다. reduce를 사용할 때는 항상 안전하게 초기값을 정해주자. 부분 집합을 구할 시, 모든 원소를 포함할 것인지, 포함하지 않을 것인지를 확인하면서 끝까지(L===n) ..

Algorithm/Inflearn

[알고리즘/인프런] 부분집합

문제 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램 을 작성하세요. 풀이 #1처럼 재귀 함수의 매개변수로 누적값을 전달하는 경우, 콜스택에서 최상단 함수 실행 컨텍스트가 제거 되었을 때 이전 함수 실행 시의 값을 기억하고 있기 때문에 각 재귀를 돌기 전에 해당 값을 포함할 지의 여부를 결정해주지 않아도 된다. 그렇지 않은 경우, #2과 같이 부분집합에 어떤 값을 포함할지의 여부를 체크하는 배열을 이용할 수 있다. #1 function solution(n) { function DFS(L, res) { if (L === n + 1) console.log(res); else { DFS(L + 1, res + " " + L); // 부분집합에 포함 O DFS(L + ..

개발자 김비숑
'Algorithm/Inflearn' 카테고리의 글 목록 (4 Page)