Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BOJ] 14501 #25

Open
HyomK opened this issue Jan 31, 2023 · 0 comments
Open

[BOJ] 14501 #25

HyomK opened this issue Jan 31, 2023 · 0 comments

Comments

@HyomK
Copy link
Owner

HyomK commented Jan 31, 2023

백준 14501 퇴사
https://www.acmicpc.net/problem/14501
[문제유형] 다이나믹 프로그래밍 , 브루트포스 알고리즘

image

점화식

if (i + t[i] <= n) dp[i] = max(dp[i + time[i]], dp[i + time[i]] + pay[i])

현재 날짜에서 소요 시간과 비용을 더해 dp에 저장한다.
dp : N일에 얻을 수 있는 최대 수익이후, 중복될 때 최대값을 넣는다.

 val dp = IntArray(N+1){0}

for(i in 0 until N){
            val next = i+time[i]
            //날짜가 범위를 넘어가지 않는 경우
            if(next<=N) {
                dp[next] = Math.max(dp[next] , dp[i]+pay[i])
            }
            dp[i+1] = Math.max(dp[i+1],dp[i]) 
        }

next는 x번째 날 일을 했을 때 끝나서 다시 시작할 수 있는 당일을 의미한다

ex) 1번째날의 업무가 3일 걸린다면 1,2,3 일까지 일하고 4일부터 새로운 일을 시작할 수 있을 것이다.

HyomK added a commit that referenced this issue Jan 31, 2023
HyomK added a commit that referenced this issue Jan 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant