재귀 #recursion 4

백준 18511 큰 수 구성하기

https://www.acmicpc.net/problem/18511 18511번: 큰 수 구성하기 첫째 줄에 N, K의 원소의 개수가 공백을 기준으로 구분되어 자연수로 주어진다. (10 ≤ N ≤ 100,000,000, 1 ≤ K의 원소의 개수 ≤ 3) 둘째 줄에 K의 원소들이 공백을 기준으로 구분되어 주어진다. 각 www.acmicpc.net 1~9의 주어진 K개의 자연수를 이용해서, N보다 작거나 같은 수 중 가장 큰수를 구하는 문제다. 첫 시도는 1) N의 자릿수를 구하고 2) 자릿수 만큼 재귀적으로 K에 속한 수를 하나씩 추가한 정수를 만든 후 3) 만든 수를 모아놓는 vector에서 조건에 맞는(N보다 작거나 같은)수 중 큰 수를 구하려 했다. 틀렸다. 이유는 범위를 잘못 책정했다는 것이다. 1..

알고리즘/백준 2021.12.22

백준 17478 재귀함수가 뭔가요?

https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 재귀함수가 무엇이냐는 문제다. 출력만 보면 정신 나갈 것 같다. "를 출력하려면 \"로 표현해야 한다. 이스케이프 문자 (escape char)라고 하는 백슬래쉬(\)를 적어줘야 한다. #include using namespace std; void print_(int n){ for(int i=0; i

알고리즘/백준 2021.12.22

백준 6603 로또

https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 6)개 고른 후, 그 중에서 6개의 숫자를 고르는 문제다. bitset이 깔끔할 것이라 생각했지만, 오늘은 재귀 공부하는 날이다. 숫자를 하나씩 추가하거나 제거하면서 조합을 만든다. bool visited 배열을 통해 특정 숫자의 포함 여부를 판단할 수 있다. #include using namespace std; #include bool visited[50]; //..

알고리즘/백준 2021.12.22

백준 5568 카드 놓기

https://www.acmicpc.net/problem/5568 5568번: 카드 놓기 예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net 만들 수 있는 정수를 모두 구하는 문제다. 지문에 "이렇게 한 정수를 만드는 조합이 여러 가지 일 수 있다."라는 말이 적혀있다. 중복을 없애자. #include using namespace std; #include #include #include set ans; bool visited[11]; void recur(const vector& v, int depth, int K, int now, const string& S){ if(depth == K){ ans.insert(S); }else{ ..

알고리즘/백준 2021.12.22