본문 바로가기

재귀 함수3

[알고리즘] 백트래킹 1 (Backtracking) 개인 공부 후 자료를 남겨놓기 위한 목적이므로, 생략되거나 오류가 있을 수 있음을 알립니다. 목차 0. 백트래킹의 목적 1. 백트래킹의 특징 2. 기본 구조 3. 1번 템플릿 4. 2번 템플릿 5. 3번 템플릿 6. 가지치기 0. 백트래킹의 목적 코드를 짜다보면 n중 반복문을 짤 경우가 생기게 된다. 이를 하드코딩으로는 거의 해결할 수 없게되므로 재귀함수를 이용하여 짜게 되는데 재귀함수를 이용한 완전 탐색 알고리즘을 백트래킹이라고 한다. 간단히 말해서는 정해지지 않은 n중 for문을 짜기 위한 목적의 알고리즘이라고 생각해도 된다. 1. 백트래킹의 특징 백트래킹의 특징은 다음과 같다. 진입장벽이 높다. (재귀함수 사용) (후술할) 기본 템플릿에서 내용을 수정하려면 재귀에 대한 높은 이해도를 요구한다. 한번.. 2024. 2. 15.
[백준] 15654번 : N과 M (5) (C++) 15654번 : N과 M (5) 문제) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 입력 : 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 출력 : 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 풀이) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 .. 2024. 2. 15.
[백준] 15651번 : N과 M (3) (C++) 15651번 : N과 M (3) 문제) 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 입력 : 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7) 출력 : 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 풀이) 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 31 32 33 34 35 36 37 38 39 .. 2024. 2. 15.