티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/2579
2579번: 계단 오르기
계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점
www.acmicpc.net
2. 설명
dp배열 초기화 때문에 헤맨 문제
무조건 첫번 째 계단부터 시작해야 되는 줄 알았는데 그런 조건은 없다.
마지막 계단만 밟으면 됨.
따라서 dp[2]에 첫번 째 계단, 두번 째 계단을 밟을 경우와 첫번 째 계단, 세번 째 계단을 밟을 경우 중 최댓값을 삽입해야 한다.
3. 코드
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); // 계단 개수
int[] stairs = new int[300];
int[] dp = new int[300];
for(int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine());
stairs[i] = Integer.parseInt(st.nextToken());
}
dp[0] = stairs[0];
dp[1] = stairs[0]+stairs[1];
dp[2] = Math.max(stairs[0]+stairs[2], stairs[1]+stairs[2]);
for(int i=3; i<N; i++) {
dp[i] = Math.max(dp[i-2]+stairs[i], dp[i-3]+stairs[i-1]+stairs[i]);
}
System.out.println(dp[N-1]);
}
}
'알고리즘 풀이 > 백준' 카테고리의 다른 글
백준 2156 포도주 시식 JAVA (DP) (0) | 2020.07.07 |
---|---|
백준 2193 이친수 JAVA (DP) (0) | 2020.07.06 |
백준 1149 RGB거리 JAVA (DP) (0) | 2020.07.05 |
백준 11726 2xn 타일링 JAVA (DP) (0) | 2020.07.04 |
백준 1003 피보나치 함수 JAVA (DP) (0) | 2020.07.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday