중복순열 구하기(itertools 라이브러리)
·
Coding Test/Combination
중복순열 구하기(DFS / itertools 라이브러리) 분석 풀이 import sys input=sys.stdin.readline n,m=map(int, input().split()) res=[0]*n total=0 def dfs(x): global total if x==m: for j in range(m): print(res[j], end=' ') total+=1 print() else: for i in range(1,n+1): res[x]=i dfs(x+1) dfs(0) print(total karla.tistory.com """ 1부터 N까지 번호가 적힌 구슬 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열 하는 방법을 모두 출력 N(3
수들의 조합(itertools 라이브러리)
·
Coding Test/Combination
수들의 조합(DFS) import sys input=sys.stdin.readline n,k=map(int,input().split()) arr=list(map(int, input().split())) m=int(input()) def dfs(x,s,sum): global cnt if x==k: if sum%m == 0: cnt += 1 else: for i in range(s,n): dfs(x+1,i+1,sum+arr[i]) cnt=0 dfs(0,0,0) print(cnt) karla.tistory.com """ N개의 정수 K개를 뽑는 조합의 합이 임의의 정수 M의 배수인 개수 는 몇 개가 있는지 출력 5개의 숫자 2 4 5 8 12 3개를 뽑은 조합의 합이 6의 배수인 조합을 찾으면 4+8+12 2..
순열 추측하기(itertools 라이브러리)
·
Coding Test/Combination
순열 추측하기(DFS, 파스칼 삼각형, 이항계수)분석 이항계수 리스트 선언 풀이 """ 가장 윗줄에 1부터 N까지의 숫자, 둘째 줄부터 위의 두개를 더한 값이 저장 N: 4, 가장윗줄: 3 1 2 4 3 1 2 4 4 3 6 7 9 16 N(1~10)과 가장 밑에 있는 숫자(F)가 주어져 있karla.tistory.com  import itertools as itimport sysinput=sys.stdin.readlinen,f=map(int,input().split())visited=[False]*(n+1)p=[0]*n# 이항계수b=[1]*nfor i in range(1,n): b[i]=b[i-1]*(n-i)//i# 순열 구하기a=list(range(1,n+1))for tmp in it.permu..
조합 구하기(DFS)
·
Coding Test/Combination
분석 매개변수 s : 가지를 받는 첫번째 수(for문 시작 숫자) 풀이 """ 1~N 번호 구슬, M개 뽑는 방법의 수 출력 N(3
[1256번] 사전(수학, 조합)
·
Coding Test/Combination
1256번: 사전 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 김진영 조교는 동호와 규완이에게 특별 과제를 주었다. 특별 과제는 특별한 문자열로 이루어 진 사전을 만드는 것이다. 사전에 수록되 www.acmicpc.net 분석 n개의 "a", m개의 "z", k번째 문자열 출력 조합점화식 : dp[i][j] = dp[i-1][j]+dp[i-1][j-1] 현재 자릿수에서 a를 선택했을 때 남아 있는 문자들로 만들 수 있는 모든 경우의 수를 T라고 가정 나머지 문자열을 만들 수 있는 경우의 수 = D[남은문자 총개수][남은 z개수] T와 K를 비교해 문자 선택 T ≥ K : 현재 자리 문자를 a로 선택 T < K : 현재 자리 문자를 z로 선택하고, K-=T로 업데이트 N = 3, M = 2,..
[1722번] 순열의 순서 구하기(수학, 구현)
·
Coding Test/Combination
1722번: 순열의 순서 첫째 줄에 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄의 첫 번째 수는 소문제 번호이다. 1인 경우 k(1 ≤ k ≤ N!)를 입력받고, 2인 경우 임의의 순열을 나타내는 N개의 수를 입력받는다. N개의 수에는 1부터 N www.acmicpc.net 분석 4! = 24 3! = 6 2! =2 1! =1 제일 앞 자리에 사용할 수 있는 숫자 경우의 수 4가지, 다음 3가지, 다음 2가지, 다음 1가지 ➔ N자리의 수로 만들 수 있는 순열의 모든 경우의 수 N! 1. K번째 순열 출력 1) 로직 1. 주어진 값(K)과 현재자리(N) -1에서 만들 수 있는 경우의 수를 비교 2. 1에서 K가 더 작아질 때까지 경우의 수를 배수(cnt)로 증가시킴(순열의 순서를 1씩 늘림) 3. K가..