본문 바로가기
반응형

재귀5

🧮 부분 집합, 멱집합 구하기 알고리즘 직접 구현! 부분집합, 멱집합을 구하는 알고리즘을 파이썬으로 구현해보자. 부분 집합, 멱 집합이란? 부분 집합은 어떤 집합에서 몇몇 원소들만 뽑아서 만든 집합. 부분 집합은 원래 집합에 포함되는 관계이다. 멱집합은 어떤 집합의 모든 부분 집합을 모아둔 집합 원소 갯수가 n인 원래 집합에서 원소 갯수가 r인 부분집합의 갯수는 nCr(조합)과 같다. 멱집합 원소의 갯수는 2^n이다. 부분 집합, 멱집합 알고리즘 구현해보기 부분 집합 조합을 구하는 방법과 같다. 아래 글 참고. 🧮 조합 알고리즘 직접 구현! 조합과 중복조합 알고리즘을 파이썬으로 구현하기 조합이란? 원소를 순서없이 나열하는 것 n개의 원소에서 r개를 조합하면 가짓수는 n!/(n-r)!r! 중복조합은 n+r-1개의 원소에서 r개를 조합하는 것 programm.. 2023. 1. 10.
🧮 조합 알고리즘 직접 구현! 조합과 중복조합 알고리즘을 파이썬으로 구현하기 조합이란? 원소를 순서없이 나열하는 것 n개의 원소에서 r개를 조합하면 가짓수는 n!/(n-r)!r! 중복조합은 n+r-1개의 원소에서 r개를 조합하는 것과 같다. n개의 원소에서 모든 조합 가지수는 2^n - 1 여러가지 조합 알고리즘 구현해보기 기본 조합 n개의 원소가 있는 배열에서 r개를 뽑는다. 조합 점화식에 기반한 방식 def combination(arr, r): if r == 0: return [set()] elif arr == []: return [] new_arr = arr[:] item = new_arr.pop() not_item_comb = combination(new_arr, r) item_comb = [s|{item} for s in c.. 2023. 1. 10.
🧮 순열 알고리즘 직접 구현! 순열과 중복순열 알고리즘을 파이썬으로 구현하기 순열이란? 원소들을 순서에 따라 나열하는 것 n개의 원소에서 r개를 나열한다 하면 그 가짓수는 n!/(n-r)! 중복해서 원소를 뽑으면 n^r 전체 순열 가짓수의 합은 조금 복잡하다. (링크) 여러가지 순열 알고리즘 구현해보기 기본 순열 n개의 원소를 가진 배열 arr에서 r개를 뽑아 나열한다. swap을 이용한 방식 def permutations (arr, r): n = len(arr) results = [] def _perm_swap (arr, depth): if (depth == r): results.append(arr[:r]) return for i in range(depth, n): # 위치를 바꿈 arr[i], arr[depth] = arr[dep.. 2023. 1. 10.
[프로그래머스] PCCP 모의고사 - 유전법칙 문제 : PCCP 모의고사 - 유전법칙 바로가기 문제 설명 멘델은 완두콩을 이용하여 7년간 실험한 결과, 다음과 같은 특별한 법칙을 발견하였습니다. 둥근 완두 순종(RR)을 자가 수분, 즉 같은 유전자끼리 교배할 경우, 다음 세대에 둥근 완두 순종 형질만 나타난다. 주름진 완두 순종(rr)을 자가 수분할 경우, 다음 세대에 주름진 완두 순종 형질만 나타난다. 두 순종을 교배한 잡종(Rr)을 자가 수분할 경우, 다음 세대의 형질은 RR:Rr:rr=1:2:1의 비율로 나타난다. (아래 그림 참조) 멘델의 법칙을 공부한 진송이는, 직접 완두콩의 자가 수분 실험을 진행했습니다. 진송이의 실험에서 완두콩 한 개를 자가 수분한 결과는 다음과 같습니다. 각 완두콩은 자가 수분해서 정확히 4개의 완두콩 후손을 남긴다... 2022. 10. 14.
[알고리즘, 원리] 유클리드 호제법 정의 a = bx+r 일 때 (a,b) = (b,r) a와 b의 최대공약수는 b와 a를 b로 나눈 나머지의 최대공약수와 같다. 이를 이용하여 반복하면 두 수의 최대공약수를 쉽게 구할 수 있다. 구현 파이썬 (Python) def gcd(a,b): while b != 0: a, b = b, a%b return a 두 수에서 유클리드 호제법을 반복하여 최대공약수를 구하는 함수 def gcd(a, b): r = b % a if r == 0: return a return gcd(r, a) 재귀 함수를 이용한 구현 def gcd(*num_list): if len(num_list) == 1: return num_list[0] elif len(num_list) == 2: a, b = num_list[0], num_l.. 2022. 9. 10.
반응형