📍 정의 및 특징
브루트포스에서 가지치기 진행
- DFS의 한 종류 (재귀)
- N이 최대 10으로 작을 경우, 백트래킹 가능
#가지치기 #DFS #재귀
📍 시간 복잡도
▷ 중복 가능한 경우
⋄ N^N
⋄ N = 8 까지 가능
▷ 중복 불가한 경우
⋄ N !
⋄ N = 10 까지 가능
📍 필요 변수
✔ 방문 여부 확인 배열 : boolean[]
- 중복 확인용
✔ 선택값 입력 배열 : int[]
📍 실행 과정
- 종료 조건
- 재귀 위한 for문
- 순열 : for문, 0부터 시작 / 조합 : for문, startIdx부터 시작
1) 결과값 추가
2) 재귀 ; 함수 호출할 때마다 매개변수 값 갱신하는 식으로 동작
public static void recur(int startIdx, int depth) {
// 1) 재귀 종료 조건
if(depth == M) {
return;
}
// 2) 재귀 위한 for문
for(int i = 0 ; i < N ; i++) {
result[depth] = A[i]; // 결과값 배열 갱신
(방문 여부 체크 - 중복X인 경우)
recur(num + 1); // 🔔 재귀
}
}
📍 문제 유형
- 조합 / 순열 생성
- 그래프 문제 - 경로 탐색, 연결 요소 찾기, MST 등
- 최적화 문제 - 최적해 탐색
- 외판원 순회 문제 (TSP)
- 제약 조건 확인
- 스도쿠, N-Queens 등 게임과 퍼즐 문제
➕ 예제
- N과 M 시리즈
ㅇ 리스트 활용
[코드트리/INTERMEDIATE LOW] n개 중에 m개 뽑기 (JAVA)
🔺 문제 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
bono039.tistory.com
ㅇ 방문 배열 활용
[백준/JAVA] 15657번: N과 M (8)
🔺 문제 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수
bono039.tistory.com
[백준/JAVA] 1759번: 암호 만들기
🔺 문제 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것
bono039.tistory.com
[백준/JAVA] 6603번: 로또
🔺 문제 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의
bono039.tistory.com
[백준/JAVA] 9663번: N-Queen
🔺 문제 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.ne
bono039.tistory.com
[백준/JAVA] 10971번: 외판원 순회 2
🔺 문제 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이
bono039.tistory.com
[백준/JAVA] 15686번: 치킨 배달
🔺 문제 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c
bono039.tistory.com
(참고)
백트래킹 알고리즘 (Back Tracking)
다음과 같은 그래프가 있다. 여기서 1부터 시작해서 숫자 순서대로 얼마나 멀리 갈 수 있는지 찾고싶다. 즉 1->2->3->4->5->... 이런식의 루트를 찾으려 한다. 우선 생각해볼 수 있는 방법은, 그냥 모
nahwasa.com
백트래킹(Backtracking) (수정 2019-10-09)
탐색 중에서는 가장 마지막으로 쓰는 글이 아닐까 싶습니다. 이제 DFS와 BFS도 익혔으니, 백트래킹(b...
blog.naver.com
'코테 > 알고리즘' 카테고리의 다른 글
[DP] 아이템 적절히 고르기 (은행, 배낭) (0) | 2023.09.15 |
---|---|
그리디 (0) | 2023.09.04 |
힙 (Heap) (0) | 2023.08.04 |
슬라이딩 윈도우 (0) | 2023.08.01 |
LIS (최장 증가 부분 수열) (0) | 2023.07.19 |