일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 빠른 입출력
- 재귀
- 피보나치 수
- Knapsack
- SSAFY
- 완전 탐색
- 비트마스크
- MST
- 메모리풀
- 시뮬레이션
- DP
- 클래스
- 조합
- 그리디
- 크루스칼
- 이분 탐색
- 분할 정복
- 중복 순열
- dfs
- 문자열
- BeautifulSoup
- 순열
- 큐
- 백트래킹
- lis
- 링크드리스트
- 우선순위 큐
- 스택
- 세그먼트 트리
- BFS
- Today
- Total
목록조합 (11)
작심 24/7
2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 9명 중에 순서 상관없고 중복 없이 7명을 찾아내는 것이므로 조합이다. 조합 함수를 만들어서 재귀로 풀어주면 된다. 결과 벡터에 있는 값 < 현재 배열에 있는 값인 경우에만 push와 카운트, sum에 더해주고 재귀호출 해주며 카운트가 7이 될 때까지 반복한다. 카운트가 7이고 sum이 100이면 출려해주고 끝내고 아닐 경우엔 돌아와서 pop, 카운트와 sum에서도 빼준 뒤 다음 배열의 값으로 넘어간다. #include #include #include using name..
14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 조합 문제의 변형이다. N에 따라 나눌 수 있는 팀의 경우의 수를 살펴보면 N 팀 2 1 | 2 ==================== 4 1, 2 | 3, 4 1, 3 | 2, 4 1, 4 | 2, 3 ==================== 6 1, 2, 3 | 4, 5, 6 1, 2, 4 | 3, 5, 6 1, 2, 5 | 3, 4, 6 1, 2, 6 | 3, 4, 5 1, 3, 4 | 2, 5, 6 1, 3, 5 | 2, 4, 6 1, 3, 6 | 2, 4, 5 1, 4, 5 | 2..
15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net N개 중에 중복 미 포함, 순서 상관없이 M개를 뽑는 조합 문제이다. 이번엔 check 배열이 필요 없다. 앞의 값보다 큰 값일 경우에만 벡터에 넣어주고 카운트가 M일 때 출력해주면 된다. #include #include using namespace std; vector v; int cnt = 0; void combination(int N, int M, int start) { if (cnt == M) { for (int i = 0; i < v..