혼공파 unit05-2함수의 활용

암영·2022년 4월 20일

1.재귀함수

1번

다음 빈칸을 재귀함수로 만들어서 리스트를 평탄화하는 함수를 만들어 보세요. 리스트 평탄화 중첩된 리스트가 있을때 중첩을 모두 제거하고 풀어서 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))
코드를 입력하세요
profile
just do! -얼레벌레 굴러가는 공대생

0개의 댓글