08_01 합이 같은 부분 집합
231
작성한 질문수 2
왜 dfs로 풀어야하는지 잘 이해가 되지않습니다.
집합의 일부분을 사용하고 value의 값이 가장 먼저 나오는 node를 찾으면 되는 문제로 판단하고 bfs로 제출했더니 런타임오류가 발생했습니다. 아직 개념이해가 부족해 잘못된 접근 방식인건지 잘모르겠습니다. 관련해서 설명부탁드겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
DFS(깊이 우선 탐색)를 사용하여 문제를 풀어야 하는 이유는, 합이 같은 부분 집합 문제에서는 모든 부분 집합을 고려하여 탐색해야 하기 때문입니다. 이 문제는 주어진 집합의 모든 부분 집합 중에서 그 합이 특정 값과 같은 경우를 찾아야 하는데, 이를 위해서는 부분 집합을 체계적으로 생성하면서 탐색해야 합니다. DFS를 사용하면 현재 원소를 포함하는 경우와 포함하지 않는 경우로 나누어 모든 부분 집합을 생성하면서 합을 계산해볼 수 있습니다. 이 과정에서 합이 같은 부분 집합을 효율적으로 찾아낼 수 있습니다.
반면에 BFS(너비 우선 탐색)는 각 노드에서 가능한 모든 자식 노드를 동시에 탐색하는 방식으로, 이 문제에 적용했을 때 메모리 사용량이 많아지고, 모든 부분 집합을 생성하는데 있어서 BFS보다는 DFS가 더 적합합니다. 특히 합이 같은 부분 집합을 찾는 문제는 결정해야 하는 선택지(현재 원소를 포함할지 여부)가 많아질수록 탐색해야 하는 경우의 수가 기하급수적으로 늘어나게 됩니다. DFS는 이런 경우 선택지 하나하나에 대해 깊게 파고들면서 해답을 도출해낼 수 있는 반면, BFS는 모든 가능성을 넓게 탐색하기 때문에 이런 종류의 문제에서는 더 불리할 수 있습니다.
따라서, 합이 같은 부분 집합 문제에서 DFS를 사용하면 효율적으로 모든 경우의 수를 탐색하면서 해결 방법을 찾을 수 있게 됩니다. 실행 중인 런타임 오류는 BFS를 활용한 접근 방식에서 발생하는 것일 수 있으며, DFS로 문제를 접근하면서 오류를 해결해 볼 수 있을 것입니다.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
33
1
갑자기 채점 사이트가 바뀌었어요
0
34
1
문제 리스트 페이지
0
29
1
채점 사이트 관련 질문드립니다
0
24
1
봉우리 문제 질문입니다
0
84
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
65
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
72
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
85
2
6-7 강의에서
0
48
1
6-6. 장난꾸러기 질문 있습니다.
0
46
1
강의 수강후 코딩테스트
0
111
1
answer 변수 사용 여부
0
46
1
2중 for문
1
85
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
70
1
이런 풀이는 어떨까요
0
44
1
자바 스트림 방식의 효율성 질문 드립니다.
0
57
1
알고리즘 자료 구조들..
0
63
1
StringBuilder vs BufferdWriter
0
48
1
원더랜드(프림)
0
50
1
이런 코드는 어떤가요?
0
61
1
bfs 풀이
0
57
1
병합정렬
0
57
1





