Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- GitHub #Commit #BaekJoon
- 공통원소 구하기
- 등수구하기
- 인프런
- 큰 수 출력하기
- 임시반장 정하기
- 투 포인터
- 배열
- 10992
- java
- 알고리즘
- 누적 계산
- 자바
- 코테준비
- Two Pointer
- array
- 점수계산
- 모든행과열대각선의합
- 뒤집은 소수
- 두 배열 합치기
- Pointer
- 격자판
- 최대 길이
- 가장 짧은 문자거리
- 연속부분수열
- 아스키코드
- 보이는 학생
- 10991
- 백준
- ArrayList
Archives
- Today
- Total
ezhoon
[인프런] 07_06 부분집합 구하기(DFS) 본문
[Java] 인프런 문제풀이/Recursive, Tree, Graph(DFS, BFS 기초)
[인프런] 07_06 부분집합 구하기(DFS)
ezhoon 2022. 2. 13. 20:58📖 문제
- 첫 번째 줄부터 각 줄에 하나씩 부분집합을 아래 출력예제와 같은 순서로 출력한다.
- 자연수 N이 주어지면 1 ~ N까지의 원소를 갖는 집합의 부분집합을 모두 출력하시오

⚠️ 주의사항
- 공집합은 출력하지 않는다.
✍️ 이해
/**
* 1. DFS를 이용해서 풀기 위해 숫자가 주어지면 사용하는 것인지 아닌 것인지 판단
* 2. 임시배열 temp로 주어진 숫자가 사용하면 1 아니면 0으로 초기화
* 3. L == N + 1 * +1 인 이유는 3을 입력받았다고 했을 때 4번째까지 가서 확인해야 하기 때문
* 3-1. answer 초기화
* 3-2. 1 ~ N 까지 temp[i] == 1 즉 사용하는 칸이면 answeer += i
* 3-3. 공집합은 출력하지 않으므로 length() > 0 일때면 sout
*/
✏️ 풀이
import java.util.Scanner;
public class Main {
static int N;
static int[] ch;
public void DFS(int L) {
if (L == N + 1) {
String tmp = "";
for (int i = 1; i <= N; i++) {
if(ch[i] == 1) tmp += i + " ";
}
if (tmp.length() > 0) System.out.println(tmp);
}else{
ch[L] = 1;
DFS(L + 1);
ch[L] = 0;
DFS(L + 1);
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
ch = new int[N + 1];
T.DFS(1);
}
}
'[Java] 인프런 문제풀이 > Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글
[인프런] 07_08 송아지 찾기 (BFS : 상대트리탐색) (0) | 2022.02.15 |
---|---|
[인프런] 07_07 이진트리 레벨탐색 (0) | 2022.02.14 |
[인프런] 07_05 이진트리순회 (0) | 2022.02.12 |
[인프런] 07_04 피보나치 재귀(메모이제이션) (0) | 2022.02.12 |
[인프런] 07-04 팩토리얼 (0) | 2022.02.11 |
Comments