혼공파 unit05-2함수의 활용

암영·2022년 4월 20일
0

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개의 댓글

관련 채용 정보