4개 카드 중 3개 뽑기 (순서 O)
n=int(input())
path=['']*n # 최대 레벨 까지 size 맞추면 오케이
dice=[1,2,3,4]
used=[0]*6 # br의 개수 만큼 만들기
def abc(level):
if level==n:
for i in range(level):
print(path[i],end=' ')
print()
return
for i in range(6):
#if used[i]==0:
if used[i] == 1: continue
path[level]=dice[i]
used[i] =1
abc(level+1)
used[i] = 0
#path[level]=0
abc(0)
요소
• ABCD 중에 C로 시작하는 경우는 다 제외하고 출력하기
candidates = ['A','B','C','D'] #후보
n = 3 #내가 뽑을 사람 수
picked = ['']*3
used = [0]*4
def recur(k):
if k==3:
print(picked)
return
for i in range(4):
if used[i]==0:
if k==0 and candidates[i]=='C':
continue
picked[k] = candidates[i]
used[i]=1
recur(k+1)
used[i]=0
• ABCD 중에 B는 모든 경우에서 제외 !!
candidates=['A','B','C','D']
path=['']*10
def abc(level):
if level>0 and path[level-1]=='B': return
if level==3:
for i in range(level):
print(path[i],end=' ')
print()
return
for i in range(4):
#if i==1: continue
path[level]=candidates[i]
abc(level+1)
abc(0)
• ABCD 중에 연속해서 2장의 카드가 나오면 안되는 경우!!
candidates=['A','B','C','D']
path=['']*10
def abc(level):
if level>1 and path[level-1]==path[level-2]: return
if level==3:
for i in range(level):
print(path[i],end=' ')
print()
return
for i in range(4):
if level>0 and (path[level-1]==candidates[i]):continue
path[level]=candidates[i]
abc(level+1)
abc(0)
• 누적합 복습 (호출하며 출력하기 (전역변수 sum)
arr=[4,7,1,8]
sum=arr[0]
def abc(level):
global sum
#print(sum,end=' ')
if level==3:
print(sum, end=' ')
return
print(sum,end=' ')
sum+=arr[level+1]
abc(level+1)
abc(0)
• 누적합 복습 ( 리턴되며 출력하기 (전역변수sum))
arr=[4,7,1,8]
sum=arr[0]
def abc(level):
global sum
if level==3:
print(sum,end=' ')
return
sum+=arr[level+1]
abc(level+1)
sum-=arr[level+1]
print(sum,end=' ')
abc(0)
• 누적합 복습 (리턴하며 출력하기 (매개변수 sum))
arr=[4,7,1,8]
def abc(level,sum):
if level==3:
print(sum,end=' ')
return
abc(level+1,sum+arr[level+1])
print(sum, end=' ')
abc(0,arr[0])
'파이썬 알고리즘' 카테고리의 다른 글
[파이썬] SWEA SW 문제해결 응용 7일차 - 행렬찾기 (0) | 2022.11.14 |
---|---|
재귀 심화: 조합과 중복조합 (0) | 2022.10.31 |
재귀함수로 누적합 구하기 (0) | 2022.10.31 |
SWEA 1208 Flatten (0) | 2022.10.31 |
[파이썬] SWEA 4408 자기 방으로 돌아가기 (0) | 2022.10.31 |