Skip to content

Commit 210580b

Browse files
committed
#17 : 2579_계단 오르기
1 parent 722b824 commit 210580b

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
2+
#2023-05-04-Week3-과제
3+
#2579_계단 오르기
4+
5+
6+
import sys
7+
input = sys.stdin.readline
8+
9+
n = int(input()) #계단 개수
10+
score = [0 for i in range(301)] #계단 점수 리스트 -> 계단의 개수 300이하의 자연수
11+
dynamic = [0 for i in range(301)] #동적 계획법 리스트 -> 계단의 개수 300이하의 자연수
12+
13+
for i in range(n) :
14+
score[i] = int(input()) #계단 개수만큼 점수 입력
15+
16+
'''
17+
마지막 도착 계단은 반드시 밟아야 함
18+
-> 계단 개수 입력 값이 a일 때
19+
마지막 도착 계단인 a번 계단을 x번째 차례에 밟은 계단이라고 하면
20+
x-1번째 차례에는 a-1번 계단이나 a-2번 계단을 밟았을 것
21+
-> a-1번 계단을 밟았다면 a-2번째 계단은 밟을 수 없음
22+
23+
해당 인덱스번째 계단까지의 최댓값을
24+
동적 계획법 리스트에 저장
25+
26+
i번 계단까지 최댓값
27+
= i-2번 계단까지 점수를 고려한 최댓값 + i번 계단의 점수 ,
28+
i-3번 계단까지 점수를 고려한 최댓값 + i-1번 계단의 점수
29+
중 더 큰 값 (max로 비교)
30+
'''
31+
32+
dynamic[0] = score[0]
33+
dynamic[1] = score[0] + score[1]
34+
dynamic[2] = max (score[1]+score[2], score[0]+score[2])
35+
36+
for i in range(3,n):
37+
dynamic[i] = max(dynamic[i-3]+score[i-1]+score[i], dynamic[i-2]+score[i])
38+
print(dynamic[n-1])
39+
40+
41+
###########################################################################################
42+
#미리 리스트의 공간을 모두 할당 받는(?)건 낭비인가? 싶어서 다시 작성해봤지만 런타임에러 뜸
43+
44+
n = int(input()) #계단 개수
45+
score = [] #계단 점수 리스트 -> 계단 개수만큼만 할당
46+
for x in range(n) :
47+
score.append(int(input()))
48+
dynamic = [] #동적 계획법 빈 리스트
49+
50+
if n == 1:
51+
dynamic.append(score[0])
52+
print(dynamic[0])
53+
elif n == 2 :
54+
dynamic.append(max(score[0]+score[1], score[1]))
55+
print(sum(score))
56+
else : # n >= 3
57+
'''
58+
dynamic[0] = score[0]
59+
dynamic[1] = score[0] + soore[1]
60+
for i in range(2,n):
61+
dynamic[i] = max(dynamic[i-3]+score[i-1]+score[i], dynamic[i-2]+score[i])
62+
print(score[-1])
63+
64+
'''
65+
dynamic.append(max(dynamic[i-2]+score[i] , dynamic[i-3]+score[i]+score[i - 1]))
66+
67+
print(dynamic[-1]) #마지막으로 저장한 값 출력 -> d[n-1] == d[-1] == d.pop()
68+
69+

0 commit comments

Comments
 (0)