-
[백준] 2579번 계단오르기(python)Python/BAEKJOON 2022. 3. 26. 16:46728x90
문제)
알고리즘)
DP
계단의 수가 3개미만 일 경우 총 합이 최종 값이다.
그외)
n번째에 해당 계단마다 갈 수 있는 최댓값을 d[n]에 할당 한다.
해당 사이클을 반복 후 출력을 원하는 위치의 계단 값을 출력이 바로 최댓값이다.
코드)
#계단오르기 import sys n = int(sys.stdin.readline()) #계단 갯수 stair = [] #계단 저장 for _ in range(n): #N개만큼 계단 생성 stair.append(int(sys.stdin.readline())) d = [0]*n #계단 갯수만큼 확보 d[0] = stair[0] if n <3: #계단의 갯수가 3개미만일때 d[n-1] = sum(stair) else: for x in range(1,3): if x == 1: #두번째 계단 d[x] = max(stair[x]+d[x-1], stair[x-1]) #두번째 계단까지 올라가는 최고의 값 continue d[x] = max(stair[x]+stair[x-1], stair[x]+d[x-2])#3번째 계단까지 올라가는 최고의 값 for i in range(3, n): #4번째계단부터 d[i] = max(stair[i]+stair[i-1]+ d[i-3], stair[i]+d[i-2]) #i+1번째 계단까지 가는 최댓값 print(d[-1])
728x90'Python > BAEKJOON' 카테고리의 다른 글
[백준] 11047번 동전 0(python) (0) 2022.03.26 [백준] 1057번 토너먼트(python) (0) 2022.03.26 [백준] 1012번 유기농 배추(python) (0) 2022.03.16 [백준] 9048번 동전(python) (0) 2022.03.10 [백준] 2346번 풍선 터트리기(python) (0) 2022.02.28