이 영역을 누르면 첫 페이지로 이동
쿄코코 블로그의 첫 페이지로 이동

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

백준 2579(계단 오르기) -Python(파이썬),Java(자바) - DP

  • 2022.07.01 17:00
  • [백준] Python,Java로 풀기📖/다이나믹
    반응형
     

    2579번: 계단 오르기

    계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점

    www.acmicpc.net

    예제 풀이

    마지막 계단(i=5)에서의 최댓값이 나오는 가지수는 다음과 같다

      1️⃣ i=2(5-3)일때의 최댓값 + ( i=4 ) + ( i=5 )

      2️⃣ i=3(5-2)일때의 최댓값 + ( i=5 )

    이 두가지를 비교해서 최댓값을 구하면 된다. 

    dp[i] 0 1 2 3 4 5
    i번째일 때의
    최댓값
    10 10+20 =30 10+15,20+15 중 큰 값= 35 dp[3-3]+(i=2)+ (i=3),
    dp[3-2]+(i=3)
    중 큰 값 = 55
    dp[4-3]+(i=3)+ (i=4),
    dp[4-2]+(i=4)
    중 큰 값 = 65
    dp[5-3]+(i=4)+(i=5),
    dp[5-2]+(i=5)
    중 큰 값 = 75

    문제 풀이

    ① dp[0] = array[0], dp[1] = array[0]+array[1], dp[2] = max(array[0]+array[2], array[1]+array[2])
    단, n >0, n>1 , n>2라는 조건을 지정해줘야 인덱스 에러가 나지않는다. ( dp를 n개의 배열이라고 지정하였으므로)
    ② n이 3이상일 경우 dp[i] = max( dp[i-3] + array[i-1]+array[i] , dp[i-2]+array[i] )라는 점화식을 써준다.

    💻 Python(파이썬)

    import sys
    n = int(sys.stdin.readline())
    array = [int(sys.stdin.readline()) for _ in range(n)]
    dp =[0]*(n)
    if n>0:
        dp[0] = array[0]
    if n>1:
        dp[1] = array[0]+array[1]
    if n>2:
        dp[2] = max(array[0]+array[2],array[1]+array[2])
    for i in range(3,n):
        dp[i] = max(dp[i-3]+array[i-1]+array[i],dp[i-2]+array[i])
        
    print(dp[n-1])

    💻 Java(자바)

    import java.io.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(br.readLine());
            int[] array = new int[N];
            int[] dp = new int[N];
    
            for(int i=0;i<N;i++){
                array[i] = Integer.parseInt(br.readLine());
            }
            if(N>0) dp[0] = array[0];
            if(N>1) dp[1] = array[0]+array[1];
            if(N>2) dp[2] = Math.max(array[0]+array[2],array[1]+array[2]);
            for(int i=3;i<N;i++){
                dp[i] = Math.max(dp[i-3]+array[i-1]+array[i],dp[i-2]+array[i]);
            }
            System.out.println(dp[N-1]);
        }
    }
    반응형

    '[백준] Python,Java로 풀기📖 > 다이나믹' 카테고리의 다른 글

    백준 11054(가장 긴 바이토닉 부분 수열) - Python(파이썬),Java(자바) - DP  (0) 2022.07.06
    백준 10844(쉬운 계단 수) - Python(파이썬) - DP  (0) 2022.07.05
    백준 9095(1,2,3 더하기) - Python(파이썬)  (0) 2022.06.30
    백준 1463(1로 만들기) - Python(파이썬) - 다이나믹  (0) 2022.06.29
    백준 1495(기타리스트) - Python(파이썬),Java(자바) - 다이나믹 프로그래밍  (0) 2022.06.23

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    • 백준 11054(가장 긴 바이토닉 부분 수열) - Python(파이썬),Java(자바) - DP

      백준 11054(가장 긴 바이토닉 부분 수열) - Python(파이썬),Java(자바) - DP

      2022.07.06
    • 백준 10844(쉬운 계단 수) - Python(파이썬) - DP

      백준 10844(쉬운 계단 수) - Python(파이썬) - DP

      2022.07.05
    • 백준 9095(1,2,3 더하기) - Python(파이썬)

      백준 9095(1,2,3 더하기) - Python(파이썬)

      2022.06.30
    • 백준 1463(1로 만들기) - Python(파이썬) - 다이나믹

      백준 1463(1로 만들기) - Python(파이썬) - 다이나믹

      2022.06.29
    다른 글 더 둘러보기

    정보

    쿄코코 블로그의 첫 페이지로 이동

    쿄코코

    • 쿄코코의 첫 페이지로 이동

    검색

    메뉴

    • 홈

    카테고리

    • 분류 전체보기 (169)
      • Python (24)
        • 😈 99클럽 코테 스터디 4기 TIL (23)
        • 궁금한거 정리 (1)
      • SQL (16)
        • HackerRank (15)
      • [백준] Python,Java로 풀기📖 (71)
        • 정렬(Sorting) (6)
        • 그리디 (5)
        • 문자열 (7)
        • 수학 (3)
        • DFS&BFS (10)
        • 구현 (4)
        • 다이나믹 (17)
        • 이분탐색 (1)
        • 자료구조 (10)
        • 최단거리 (5)
        • 인덱스트리 (0)
      • [프로그래머스]Python,Java로 풀기 (6)
        • Level 1 (4)
        • Level 2 (2)
      • Study Platform📚 (25)
        • 김영한👨🏻‍🏫의 스프링 부트와 JPA 실무 완전 .. (5)
        • (알고리즘)- [이코테] 이것이 코딩테스트다 정리 (10)
        • 그림으로 배우는 Http&Network Basic (10)
      • 까먹을까봐 적는 것들 (5)
      • 테스트 보고 난 후..🤔 (0)
      • kt 에이블스쿨 (18)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 티스토리챌린지
    • 코딩테스트준비
    • 프로그래머스
    • TiL
    • 오블완
    • 99클럽
    • 항해99
    • 백준

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / AXZ. © 쿄코코. Designed by Fraccino.

    티스토리툴바