itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • mongodb
  • SWIFT
  • 연결리스트
  • AppleDevloperAcademy
  • ios
  • binding
  • 킨디
  • SwiftUI
  • POSTECH
  • 생활코딩
  • crud
  • nosql
  • 개발자
  • CoreData
  • 어플
  • 독립서점
  • CS
  • 점주
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • 세그멘테이션

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

[ 백준 2579 - 계단 오르기 ]
PS

[ 백준 2579 - 계단 오르기 ]

2021. 8. 11. 19:06

 

 

문제 푸는 아이디어

밑에서부터 올라갈 계단에 주목하는 것이 아니라, 계단에 올라와서 어느 계단에서 왔는지에 주목하자

 

① 한 칸 앞 계단에서 올라온 경우

dp(n) = stairs[n] + stairs[n-1] + dp(n-3)

 

② 두 칸 앞 계단에서 올라온 경우

dp(n) = stairs[n] + dp(n-2)

 

그리고 이 두 가지 경우 중 최댓값을 구하면 된다.

 

N = int(input())

stair = [0]
for _ in range(N):
    stair.append(int(input()))

if N == 1:
    print(stair[1])
else:
    dp = [0] * (N+1)
    dp[1] = stair[1]
    dp[2] = stair[1] + stair[2] 

    for i in range(3, N+1):
        dp[i] = max(dp[i-3]+stair[i-1]+stair[i], dp[i-2]+stair[i])  

    print(dp[N])
저작자표시 (새창열림)

'PS' 카테고리의 다른 글

[백준 - Swift] 1874 스택 수열  (0) 2023.01.19
[프로그래머스 - Swift] 다리를 지나는 트럭  (0) 2023.01.19
[ 백준 1003 - 피보나치 함수 ]  (0) 2021.08.10
[백준 11726 - 2 x n 타일링] DP  (0) 2021.08.09
DP ( Dynamic Programming, 동적 계획법 )  (0) 2021.08.09
    'PS' 카테고리의 다른 글
    • [백준 - Swift] 1874 스택 수열
    • [프로그래머스 - Swift] 다리를 지나는 트럭
    • [ 백준 1003 - 피보나치 함수 ]
    • [백준 11726 - 2 x n 타일링] DP
    itisjustK
    itisjustK
    https://www.instagram.com/onttaste

    티스토리툴바