여니의 취준 준비/코딩테스트 (Python)

[n8394] 악수 in python

여니's 2021. 11. 9. 10:22


예제문제를 보다보니

점화식이 보였다

 

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)