다음 빈칸을 재귀함수로 만들어서 리스트를 평탄화하는 함수를 만들어 보세요. 리스트 평탄화 중첩된 리스트가 있을때 중첩을 모두 제거하고 풀어서 1차원리스트로 만드는것을 의미합니다. 다음 실행결과를 참고해주세요.
def flatten(data):
output=[]
for item in data:
if type(item) == list:
output += flatten(item) #output에 넣고 다시 flatten 실행
else:
output.append(item)
return output
example=[[1,2,3],[4,[5,6]],7,[8,9]]
print("원본",example)
print("변환",flatten(example))
1.type 함수 사용
2.함수를 다시불러올때 굳이 return에서 불러올 필요없음.
3.output에 flatten(item)을 불러오면 다시 함수를 실행해서 output에 집어넘
4.output에서 다시 재귀함수를 실행시켜도됨-> 꼴 리턴에서 실행시키지 않아도 됨
앉힐수있는최소사람수 =2
앉힐수있는최대사람수= 10
전체사람수 =100
memo={}
def 문제(남은사람수,앉힌사람수):
key=str([남은사람수,앉힌사람수])
#종료조건
if key in memo:
return memo[key]
if 남은사람수<0:
return 0
if 남은사람수 ==0:
return 1
# 재귀처리
count=0
for i in range(앉힌사람수,앉힐수있는최대사람수+1):
count+=문제(남은사람수-i,i)
print(count)
#메모화 처리
memo[key]=count
#종료
return count
print(문제(100,2))
코드를 입력하세요