inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

1. 합이 같은 부분집합

08_01 합이 같은 부분 집합

231

윤선미

작성한 질문수 2

0

왜 dfs로 풀어야하는지 잘 이해가 되지않습니다.

집합의 일부분을 사용하고 value의 값이 가장 먼저 나오는 node를 찾으면 되는 문제로 판단하고 bfs로 제출했더니 런타임오류가 발생했습니다. 아직 개념이해가 부족해 잘못된 접근 방식인건지 잘모르겠습니다. 관련해서 설명부탁드겠습니다.

java 코딩-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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