-
[백준] 10844. 쉬운 계단 수코테 준비/DP 2023. 2. 5. 02:26
첫 풀이(시간초과....)
def stair(num): num=list(map(int,str(num))) for i in range(1,len(num)): k=abs(num[i]-num[i-1]) if k!=1: return False return True count=0 for i in range(10**(n-1),10**n): if stair(i)==True: count+=1 print(count)
정답(인터넷 참고함...)
import sys n=int(sys.stdin.readline()) dp=[[0]*10 for _ in range(n+1)] for i in range(1,10):#n이 1일때 (한자리 수일때) dp[1][i]=1 #1~9 모두 계단수 for i in range(2,n+1): #n이 2이상일때 (두자리 수 이상일때) for j in range(10): if j==0: # 0 dp[i][j]=dp[i-1][1] elif j==9: #2일때 98, 3일때 989, 4일때 9898 ... dp[i][j]=dp[i-1][8] # 1개 else: dp[i][j]=(dp[i-1][j-1]+dp[i-1][j+1]) print(sum(dp[n])%1000000000)
'코테 준비 > DP' 카테고리의 다른 글
0-1 Kanpsack 알고리즘 문제 모음 (0) 2023.04.07 [백준] 12852. 1로 만들기 2 (0) 2023.02.25 [프로그래머스] 3xn 타일링 (0) 2023.01.24 [백준] 15989. 1, 2, 3 더하기 4 / 파이썬(python) (0) 2023.01.11 [백준] 15988. 123더하기 3 (9095번 연장) (0) 2023.01.10