예제문제를 보다보니
점화식이 보였다
n=1일땐 1
n=2일땐 2
n=3일땐 3(1+2)
n=4일땐 5 (2+3)
n=5일땐 8 (3+5)
수가 매우 커질 수 있기 때문에, 마지막 자리만 출력한다.
> dp[-1]%10을 해줘야 올바른 출력값이 나오게 된다.
n = int(input())
dp = [0 for _ in range(n + 1)]
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
dp[i] = dp[i - 1] % 10 + dp[i - 2] % 10
print(dp[-1]%10)
시간이 오래 걸려서
더 좋은 코드를 찾아보았다.
dp 배열을 쓰지 않아도
변수 2개로 충분히 구할 수 있었다.
(스왑)
그리고 %60을 왜 써주는 지 아직 잘 모르겠지만..
좀 더 연구해봐야겠다.
a, b = 1, 2
n = int(input())%60
for i in range(1, n):
a, b =b, (a + b) % 10
print(a)
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[n16935] 배열 돌리기 3 in python (0) | 2021.11.09 |
---|---|
[n2697] 다음 수 구하기 in python (0) | 2021.11.09 |
[n10384] 팬그램 in python (문자열,아스키코드) (0) | 2021.11.08 |
[n9742] 순열 in python (0) | 2021.11.08 |
[n1855] 암호 in python (0) | 2021.11.08 |