일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- 15652
- 13458
- 14501
- 10872
- 15650
- 15683
- rust설치
- 1259
- 3190
- 15649
- 9663
- 2798
- 팰린드롬수
- 15651
- 백트래킹
- 14891
- rustup
- 14500
- C++
- 분해합
- 러스트란 #cargo
- 14888
- 연산자 끼워넣기 성공
- 문제풀이
- 13460
- 14890
- C
- 14503
- 테트로미노
Archives
Easy-So-Easy
[백준] 14501번 퇴사 - C/C++ (Easy 풀이) 본문
반응형
백준 14501 문제(Problem)

입력
첫째 줄에 N (1 ≤ N ≤ 15)이 주어진다.
둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000)
출력
첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.
풀이 & 전체 코드(Solution & Code)
#include<iostream>
#include<algorithm>
using namespace std;
int n, t[1002], p[1002], dp[1002];
int main() {
// 남은 일 수 N 입력
cin >> n;
// N일 동안의 상담 시간(t)과 수익(p) 입력
for(int i=0; i<n; i++)
cin >> t[i] >> p[i];
// 뒤에서부터 동적 계획법을 사용하여 최대 수익 계산
for(int i=n-1; i>=0; i--) {
int pos=i+t[i]; // 해당 날짜에서 상담이 끝나는 위치 계산
if(pos<=n)
dp[i]=max(dp[pos]+p[i], dp[i+1]); // 해당 날짜에서 상담을 할 경우와 안 할 경우 중 최대 수익 선택
else
dp[i]=dp[i+1]; // 해당 날짜에서 상담을 할 수 없는 경우 다음 날의 최대 수익을 그대로 사용
}
// 최대 수익 출력
cout << dp[0];
}
반응형
'BaekJoon' 카테고리의 다른 글
[백준] 14890번 경사로 - C/C++ (Easy 풀이) (0) | 2023.07.06 |
---|---|
[백준] 14503번 로봇 청소기 - C/C++ (Easy 풀이) (0) | 2023.07.06 |
[백준] 14500번 테트로미노 - C/C++ (Easy 풀이) (0) | 2023.07.06 |
[백준] 13458번 시험 감독 - C/C++ (0) | 2023.07.05 |
[백준] 13460번 구슬 탈출 2 - C/C++ (BFS) (0) | 2023.07.05 |