diff --git "a/\354\235\264\355\213\260\354\234\240\354\247\204/2579_\352\263\204\353\213\250 \354\230\244\353\245\264\352\270\260.py" "b/\354\235\264\355\213\260\354\234\240\354\247\204/2579_\352\263\204\353\213\250 \354\230\244\353\245\264\352\270\260.py" new file mode 100644 index 0000000..de27070 --- /dev/null +++ "b/\354\235\264\355\213\260\354\234\240\354\247\204/2579_\352\263\204\353\213\250 \354\230\244\353\245\264\352\270\260.py" @@ -0,0 +1,51 @@ +import sys + +#계단 개수 n 입력받기 +n = int(sys.stdin.readline()) + +#각 계단 점수 리스트에 입력받기 +s = [0] * 1000 # s = [] IndexError: 빈 리스트에 인덱스 지정하여 오류 -> 1. append 함수 이용 2. 리스트 미리 설정 +for i in range(n): + s[i] = int(sys.stdin.readline()) + +#점수 총합 최댓값 구하는 리스트 +dp = [0] * 1000 + +#계단 1개일 때 +dp[0] = s[0] #점수 총합 최댓값 = 첫번째 계단 점수 + +#계단 2개일 때 +dp[1] = s[0] + s[1] #점수 총합 최댓값 = 첫번째 계단 점수 + 두번째 계단 점수 + +#계단 3개 이상인 경우 +for i in range(2,n): + dp[i] = s[i] + max(dp[i-3]+s[i-1] , dp[i-2]) + +#계단 n개일 때 점수 총합 최댓값 출력 +print(dp[n-1]) + +''' +ex)계단 3개일 때 +i) 3<-2<-시작 +ii) 3<-1<-시작 +dp[2] = s[2] + max(s[1],s[0]) + +ex)계단 4개일 때 +i) 4<-3<-1<-시작 +ii) 4<-2<-1<-시작 +iii) 4<-2<-시작 +dp[3] = s[3] + max(s[0]+s[2], s[0]+s[1]) +dp[3] = s[3] + max(dp[0]+s[2], dp[1]) + +ex)계단 6개일 때 +i) 6<-5<-3<-2<-시작 +ii) 6<-5<-3<-1<-시작 +i, ii: 6<-5<-(n=3일 때 계단 오르기 경우의 수) +----------------------------------------- +iii) 6<-4<-3<-1<-시작 +iv) 6<-4<-2<-1<-시작 +v) 6<-4<-2<-시작 +iii, iv, v: 6<-(n=4일 때 계단 오르기 경우의 수) +dp[5] = s[5] + max(dp[2]+s[4], dp[3]) + +''' \ No newline at end of file