본문 바로가기

728x90

조합

(7)
[백준] 15663~15666번 N과 M[9~12] [Python] - 순열, 조합, 중복 백준 문제 사이트 N과 M[9], N과 M[10], N과 M[11], N과 M[12] 중복된 원소가 포함되기도 한 N개의 자연수가 주어졌을 때, M개의 순열, 조합, 중복 순열, 중복 조합을 구하는 문제 N과 M[7, 8]리뷰 https://savvy0402.tistory.com/192 dict.fromkeys$($딕셔너리의 키 값들, 현재 생성할 딕셔너리의 일괄적으로 들어가게 될 값$)$ 값을 안 넣으면 모든 key의 값이 None으로 저장됨 N과 M[9] from sys import stdin from itertools import permutations input = stdin.readline N, M = map(int, input().split()) s = sorted(input().rstrip(..
[백준] 15656, 15657번 N과 M[7, 8] [Python] - 중복 순열, 중복 조합 백준 문제 사이트 N과 M[7] N과 M[8] N과 M[3], N과 M[4]에서는 1~N까지 자연수로 이루어진 길이가 M인 수열을 출력했다면, N과 M[7], N과 M[8]은 주어진 N개의 자연수로 이주어진 길이가 M인 수열을 출력하는 문제입니다. 주어진 자연수를 정렬하고, 속도를 높이기 위해 문자로 변환 후, 중복 순열, 중복 조합의 경우를 구하고 출력하는 코드입니다. product, combinations_with_replacement의 반환 값은 튜플 형태의 원소를 지니고 있어서, 튜블 내 원소를 ' '$($공백$)$으로 이어 붙인 후 join 매소드로 줄바꿈으로 문자를 이어 붙였습니다. N과 M[3], N과 M[4] 리뷰 https://savvy0402.tistory.com/6 https://sa..
[백준] 1904번 01타일 [Python] - 피보나치 수열 00과 1로 N자리수 이진수를 만드는 경우의 수 구하는 문제 $($경우의수를 15746로 나눈 나머지 출력$)$ 더보기 문제 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다. 그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수열을 만들 수 없게 되었다. 예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다. $($01..
[백준] 15654, 15655번 N과 M[5, 6] [Python] - 순열, 조합 N과 M$($1$)$, $($2$)$와 거의 같아서 링크와 코드만 올려봅니다. 15654번: N과 M (5) (acmicpc.net) import sys from itertools import permutations input = sys.stdin.readlin N, M = map(int, input().split()) li = sorted(list(map(int, input().split()))) pm = permutations(li, M) for p in pm: print(*p) 15655번: N과 M (6) (acmicpc.net) import sys from itertools import combinations input = sys.stdin.readline N, M = map(int, input..
[백준] 11050번 이항 계수 1 [Python] - 조합 조합 $_{n}C_{r}$을 구하는 문제 더보기 문제 자연수 N과 정수 K가 주어졌을 때 이항 계수 \left(\begin{array}{c}N\\ K\end{array}\right)를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. $($1 ≤ N ≤ 10, 0 ≤ K ≤ N$)$ 출력 \left(\begin{array}{c}N\\ K\end{array}\right)를 출력한다. 조합 \begin{align}\left(\begin{array}{c}N\\ K\end{array}\right) = \frac{N!}{K!(N - K)!} \end{align} 팩토리얼 \begin{align}N! =1*2*3* \cdots * N\end{align} 다 같은 내용이지만 3가지 방식으로 코드를 ..
순열, 조합, 중복 순열, 중복 조합 일상 생활에서 문제 해결을 위해 다양한 선택과 배열을 해야 할 때가 있습니다. 여러 가지 요소들을 조합하여 원하는 결과물을 만들어내는 순열, 조합, 중복 순열, 중복 조합은 프로그래밍에서 자주 활용되는 개념으로, 주어진 데이터를 다양한 방법으로 배열하는 방법을 배우게 됩니다. 이러한 기술들로 더 효율적이고 창의적인 코드를 작성할 수 있게 됩니다. 이번에는 순열과 조합, 그리고 중복 순열과 중복 조합에 대해 알아보겠습니다. 우선 이들의 개념과 차이점을 알아보고, 파이썬의 itertools 라이브러리를 활용하여 간단한 예제들을 소개해드릴 예정입니다. 이러한 개념들을 익히고 나면, 프로그래밍에서 다양한 문제를 해결하는 데에 큰 도움이 될 것입니다. 순열$($Permutation$)$ $_{n}P_{r}$ 순열..
[백준] 15650번 N과 M[2] [Python] - 조합 $_{n}C_{r}$ 조합을 구하는 문제 더보기 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. $($1 ≤ M ≤ N ≤ 8$)$ 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 조합이란 n개의 원소를 갖는 집합에서 r개의 원소를 선택하는 것 itertools.combinations : 조합을 구하는 함수 $_{n}C_{r}$ : itertools.co..