[4코1파] 4명의 안드로이드 개발자와 1명의 파이썬 개발자의 코딩 테스트 서막 : 4코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원

START :

[3코1파] 2023.01.04~ (80일차)
[4코1파] 2023.01.13~ (71일차)

Today :

2023.03.24 [80일차]

프로그래머스 LV 2
2 x n 타일링
https://school.programmers.co.kr/learn/courses/30/lessons/12900

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/12900

제한사항

가로의 길이 n은 60,000이하의 자연수 입니다.
경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요.

입출력 예

입출력 예 설명
입출력 예 #1
다음과 같이 5가지 방법이 있다.

문제 풀이 방법

동적계획법 dp 로 풀었고,
n=1 일때 1
n=2 일때 2
n=3 일때 3
n=4 일때 5
n=5 일때 8

요런식으로 함수식이 dp[n] = dp[n-1] + dp[n-2] 여서,
그대로 했다가는 메모리 난리나서
바로바로 1000000007 를 나눠준 값을 리스트에 넣어서 해결

내 코드

def solution(n):
    
    dp = [_ for _ in range(n)]
    dp[0], dp[1] = 1,2
    
    for i in range(2, n):
        dp[i] = (dp[i-1] + dp[i-2]) % 1000000007

        
    return dp[n-1]

증빙

다른 사람 풀이

뭔 for 문을 돌면서, a,b를 swap 하면서 해결했는데... 나이거 이해 안됨.. 도라뻐림

여담

이런 부류들의 제목을 가지고 있는건 다른 사람 풀이 보면 수학자가 따로없어

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글