Algorithm/📊 Problem Solving

[백준/BOJ] 14728 - 벼락치기

posted by sangmin

14728 - 벼락치기

문제

ChAOS(Chung-ang Algorithm Organization and Study) 회장이 되어 일이 많아진 준석이는 시험기간에도 일 때문에 공부를 하지 못하다가 시험 전 날이 되어버리고 말았다. 다행히도 친절하신 교수님께서 아래와 같은 힌트를 시험 전에 공지해 주셨다. 내용은 아래와 같다.

  1. 여러 단원을 융합한 문제는 출제하지 않는다.
  2. 한 단원에 한 문제를 출제한다. 단, 그 단원에 모든 내용을 알고 있어야 풀 수 있는 문제를 낼 것이다.

이런 두가지 힌트와 함께 각 단원 별 배점을 적어 놓으셨다. 어떤 단원의 문제를 맞추기 위해서는 그 단원의 예상 공부 시간만큼, 혹은 그보다 더 많이 공부하면 맞출 수 있다고 가정하자. 이때, ChAOS 회장 일로 인해 힘든 준석이를 위하여 남은 시간 동안 공부해서 얻을 수 있는 최대 점수를 구하는 프로그램을 만들어 주도록 하자.

코드

N, T = map(int, input().split())
time, score = [], []
for i in range(N):
    K, S = map(int, input().split())
    time.append(K)
    score.append(S)

dp = [[0 for _ in range(T+1)] for _ in range(N+1)]

for i in range(1, N+1):
    for j in range(1, T+1):
        if j >= time[i-1]:
            dp[i][j] = max(dp[i-1][j], dp[i-1][j-time[i-1]] + score[i-1])
        else:
            dp[i][j] = dp[i-1][j]

print(dp[N][T])

한마디

(배점 X 시간) 2차원 배열을 만들어 시간이 충분할 때 해당 단원을 넣을지 말지를 선택해줬다.

 

14728번: 벼락치기

ChAOS(Chung-ang Algorithm Organization and Study) 회장이 되어 일이 많아진 준석이는 시험기간에도 일 때문에 공부를 하지 못하다가 시험 전 날이 되어버리고 말았다. 다행히도 친절하신 교수님께서 아래와

www.acmicpc.net

 

'Algorithm > 📊 Problem Solving' 카테고리의 다른 글

[백준/BOJ] 15990 - 1, 2, 3 더하기 5  (0) 2021.02.12
[백준/BOJ] 7579 - 앱  (0) 2021.02.09
[백준/BOJ] 12865 - 평범한 배낭  (0) 2021.02.09
[백준/BOJ] 9084 - 동전  (0) 2021.02.09
[백준/BOJ] 1535 - 안녕  (0) 2021.02.08