본문 바로가기
OLD_알고리즘/Baekjoon

백준] 2579 : 계단 오르기

by 달승 2020. 10. 7.

BOJ에서 다음 문제들을 쭉 순서대로 풀어본다.  boj.kr/문제번호 <= 형태로 검색하면 된다.

DP - 1463, 11726, 11727, 9095, 10844, 11057, 2193, 9465, 2156, 11053, 11055, 11722, 11054, 1912, 2579, 1699, 2133, 9461, 2225, 2011, 11052

 

 

1시간 넘어가면 풀던 짓을 그만두고 반드시 AC받은 코드 찾아보기 (설명이 꼭 달려있는 코드를 읽자)

그리고 푼 다음에는 반드시 다른 사람의 코드를 봐야 한다.

특히 자신만의 가상의 스승을 잡고 그 분의 코드를 보는 것도 좋은 방법이라 생각한다.

너무 갓갓들은 이상한 방식으로도 짜는 경우도 있기 때문에 적당한 사람을 선택해야 한다.

 

 

알고리즘 문제풀이(PS) 시작하기

plzrun.tistory.com

 

내가 애용하는 IDE 사이트

(IDE 자동 완성이 불가능하기 때문에 사용하는 중)

 

Ideone.com

ideone.com


 

 

2579번: 계단 오르기

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

www.acmicpc.net

 

 

 

접근 방법

제시된 3가지 규칙 중, 하나를 선택해 나머지 규칙을 적용합니다.
선택해야 하는 한 가지 규칙은 바로 '반드시 마지막 계단은 밟을 것'.


그렇기 때문에 마지막 계단을 기준으로 규칙을 생각해줍니다.



 

 

 

정답 코드

#include <iostream>
using namespace std;

int arr[300], dp[300];

int Max(int a, int b){
	return a > b ? a : b;
}

int main() {
	
	int n;
	
	cin >> n;
	
	for(int i = 1; i <= n; i++){
		cin >> arr[i];
	}
	
	for(int i = 1; i <= n; i++){
		dp[i] = Max(arr[i] + dp[i - 2], arr[i] + arr[i - 1] + dp[i -3]);
	}
	
	cout << dp[n];

	return 0;
}

 

 

 

 

참고한 블로그

 

-

댓글