본문 바로가기

잡/공부일기

9/25 공부

https://www.acmicpc.net/problem/14501

 

14501번: 퇴사

첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.

www.acmicpc.net

dp 문제이다

뒤에서 가는 생각은 했는데 그 이상은 구현해내지 못했다

n = int(input())
times = [], price = []
for i in range(n):
    t, p = map(int,input().split())  
    times.append(t)
    price.append(p)

dp = [-100]*(n+1)
maxvalue= 0

for i in range(n-1,-1,-1):
    atTime = i + times[i]
    if atTime <= n:
        dp[i] = max(maxvalue,dp[atTime]+price[i])
        maxvalue = dp[i]
    else:
        dp[i] = maxvalue

https://www.acmicpc.net/problem/18353

 

18353번: 병사 배치하기

첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

n = int(input())
soldier = list(map(int,input().split()))
soldier.reverse()
dp = [1]*n

for i in range(1,n):
    for j in range(0,i):
        if soldier[j] < soldier[i]:
            dp[i] = max(dp[i],dp[j]+1)

print(n-max(dp))

이문제는 LIS 알고리즘을 알고 있어야 풀 수있었던 문제이다. 언제 한번 시간되는대로 LIS 알고리즘을 정리해야겠다.

 

 

 

dp 문제는 조금 어렵다;; 

문제를 한 100문제는 풀어봐야 알 꺼 같다.

 

반응형

' > 공부일기' 카테고리의 다른 글

10월 10일 공부  (0) 2021.10.10
10월 7일 공부  (0) 2021.10.07
9/11 공부  (0) 2021.09.11
8/27 공부  (0) 2021.08.27
8/23 공부  (0) 2021.08.23