UL :)
UL의 개발 블로그
UL :)
전체 방문자
오늘
어제
  • 분류 전체보기 (220)
    • 일상 (1)
    • 회고록 (7)
    • ChatGPT 아카이빙 (0)
    • PS(Java) (114)
      • 백준 (37)
      • 인프런 강의 문제 (77)
    • Web (69)
      • Spring (18)
      • JPA (7)
      • JSP (9)
      • HTML5 (12)
      • CSS (19)
      • HTTP (0)
      • 보안 (2)
    • Language (5)
      • Java (3)
      • JS (1)
      • Python (1)
    • Git, GitHub (4)
    • Settings (18)
      • IntelliJ (7)
      • Eclipse (2)
      • VSCode (3)
      • Android Studio (1)
      • VMware (2)
      • Mac (0)
    • Etc (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • IDENTITY 전략
  • 백준
  • produces
  • 영속성컨텍스트
  • @Table
  • argumentresolver
  • @PostMapping
  • ViewName반환
  • 동일성보장
  • BOJ
  • @ManyToOne
  • 정렬
  • EntityManagerFactory
  • consumes
  • 요청헤더
  • 엔티티 매핑
  • @Column
  • @Id
  • SEQUENCE 전략
  • @GetMapping
  • 1차 캐시
  • 영속성
  • HttpMessageConverter
  • @JoinColumn
  • ReturnValueHandler
  • HandlerMethodArgumentResolver
  • TABLE 전략
  • JPA
  • ORM
  • @RequestParam

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
UL :)

UL의 개발 블로그

PS(Java)/백준

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

2022. 3. 31. 03:20

문제

 

2579번: 계단 오르기

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

www.acmicpc.net

풀이

참고한 풀이

 

앞으로는 PS 문제 푸는 방식을 바꿔보려한다.


문제풀이법이나 다양한 알고리즘에 익숙하지 않은 상태에서 문제를 풀려다 보니 시간이 오래걸리고, 해답을 보더라도 이해하는데 시간이 걸린다.

 

학창시절 수학을 잘 못하고, 싫어했던 이유 중에 하나가 안풀리는 문제가 있으면 몇시간이고 끙끙 대면서 붙잡고 있기 때문이었는데 지금 똑같은 상황을 겪고 있다 ㅎㅎ...

 

앞으로는 우선 문제에 대해서 10분간만 생각해보고 바로 해답을 보면서 풀어야겠다.

 

코드

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int n = in.nextInt(); //계단 수

        int[] stair = new int[301];//값
        int[] dp = new int[301]; //누적합        

        for(int i=1; i<=n; i++) //계단 점수 입력받기
            stair[i] = in.nextInt();

        dp[1] = stair[1];
        dp[2] = stair[1] + stair[2];
        dp[3] = Math.max(stair[1], stair[2]) + stair[3];

        //dp[i-3]이 식에 필요하므로 앞 세칸은 값 저장 필요                
        for(int i=4; i<=n; i++) {
            //1. n-3, n-1, n
            //2. n-2, n
            dp[i] = Math.max(dp[i-3] + stair[i-1], dp[i-2]) + stair[i];//최댓값 저장
        }

        System.out.println(dp[n]);

    }
}
저작자표시 비영리 변경금지 (새창열림)

'PS(Java) > 백준' 카테고리의 다른 글

[PS] 백준 11650번 좌표 정렬하기(Comparable과 Comparator)  (0) 2022.05.18
[PS] 백준 2751번 수 정렬하기 2  (0) 2022.05.17
[PS] 백준 1912번 연속합  (0) 2022.03.25
[PS] 백준 11054번 가장 긴 바이토닉 부분 수열 - DP  (0) 2022.03.25
[PS] 백준 11722번 가장 긴 감소하는 부분 수열 - DP  (0) 2022.03.25
    'PS(Java)/백준' 카테고리의 다른 글
    • [PS] 백준 11650번 좌표 정렬하기(Comparable과 Comparator)
    • [PS] 백준 2751번 수 정렬하기 2
    • [PS] 백준 1912번 연속합
    • [PS] 백준 11054번 가장 긴 바이토닉 부분 수열 - DP
    UL :)
    UL :)
    백엔드 개발자를 목표로 달리고 있습니다🔥

    티스토리툴바