티스토리 뷰

반응형

 

[14501 퇴사] 문제를 DP로 푸는데 런타임에러가 계속 떴다.

원래는 java로 풀어서 이번에 C++로 푸는 거는 처음이었는데 미숙한 C++이라서 배열의 스택오버플로우나 다른 곳에 에러가 있는 줄 알았다.....

 

 

 

하지만,

 

https://www.acmicpc.net/board/view/24216

 

return 값의 문제였다 ㅜㅜ

이것도 모르고 왜 안되나....너무 오랜만이라 알고리즘 감을 많이 잊어버렸구나..하며 자책했다!!

 

BOJ는 C++로 사용할 경우, main 함수에 return 0을 줄것!! 잊지말자!!

 

 

아래는 14501퇴사 문제를 dp로 푼 풀이입니당!

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<algorithm>
using namespace std;
 
int dp[100= { 0 };
int t[16];
int p[16];
int N;
int main(void) {
    cin >> N;
 
    int m = 0;
    for (int i = 1; i <= N; i++) {//배열 초기화
        cin >> t[i];
        cin >> p[i];
    }
 
    for (int i = N; i >= 1; i--) {
        if (i <= N && (i + t[i] > N + 1)) {
            dp[i] = m;
        }
        else {
            dp[i] = max(dp[i + 1], p[i] + dp[i + t[i]]);
        }
        m = max(m, dp[i]);
    }
    m = 0;
    for (int i = 1; i <= N; i++) {
        //cout << dp[i] << endl;
        m = max(m, dp[i]);
    }
    cout << m << endl;
    return 0;
}
cs
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함