반응형

   문제

   https://www.acmicpc.net/problem/2579




마지막 계단을 무조건 밟아야 한다는 조건을 이용해보자.

해당계단을 밟을때 최대값은 이전계단을 밟고 이전계단의 전전계단을 밟았을때와 전전계

단을 밝을때 중 하나이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
 
n=int(sys.stdin.readline())
steps=[]
max_score=[0 for _ in range(n)]
for i in range(n):
    steps.append(int(sys.stdin.readline()))
 
 
 
def score(n):
    # 첫번째 계단
    max_score[0]=steps[0]
    if n==1:
        return
    # 두번째 계단의 최대값은 두계단 모두밟을때
    max_score[1]=steps[1]+steps[0]
    if n==2:
        return
    # 세번재 계단은 1,3 2,3중 큰거
    max_score[2]=max(steps[0]+steps[2],steps[1]+steps[2])
    if n==3:
        return
    for i in range(3,n):
        #이번계단을 밟고
        #전계단 밝고 전계단의 전전계단을 밟을때
        #전전 계단을 밟을때
        max_score[i]=steps[i]+max(steps[i-1]+max_score[i-3],max_score[i-2])
 
score(n)
print(max_score[n-1])

cs



반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기