백준|9461번|파도반 수열

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
59/136

문제설명
숫자 N을 입력받고 파도반 수열의 N번째 수를 출력하는 문제입니다.

작동 순서
1. 숫자 N을 입력받습니다.
2. N이 1, 2, 3일경우 1을 반환하고 4, 5일경우 2를 반환합니다.
3. N이 6이상인 경우 파도반 수열 P(N)은 P(N-1)+P(N-5)이므로 메모이제이션을 활용해 값을 구해줍니다.
4. 구한 값을 출력합니다.

소스코드

memo = [0 for i in range(101)]


def pado(n):
    if n == 1:
        return 1
    elif n == 2:
        return 1
    elif n == 3:
        return 1
    elif n == 4:
        return 2
    elif n == 5:
        return 2
    else:
        if memo[n-1] == 0:
            p1 = pado(n-1)
            memo[n-1] = p1
        else:
            p1 = memo[n-1]
        if memo[n-5] == 0:
            p2 = pado(n-5)
            memo[n-5] = p2
        else:
            p2 = memo[n-5]
        return p1+p2


T = int(input())
for i in range(T):
    print(pado(int(input())))

후기
굉장히 간단한 문제라서 별 문제 없이 풀 수 있었습니다.

profile
INTP 개발자 지망생

0개의 댓글