반응형
https://www.acmicpc.net/problem/2056
2056번: 작업
수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해
www.acmicpc.net
[ 문제풀이 ]
1. 각 작업이 끝나는 시간을 저장할 cost 배열을 만듭니다.
2. 선행 작업이 모두 자신보다 숫자가 작은 작업이므로 앞에서 진행된 작업 중 가장 늦게 끝난 작업에 해당 작업이 끝나는데 걸리는 시간을 더해 cost에 저장해줍니다.
3. cost 배열에서 가장 큰 값을 출력합니다.
[ 소스코드 ]
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 | #include<iostream> #include<vector> using namespace std; int N; int cost[10001]; int ans; int main() { scanf("%d", &N); for (int i = 1; i <= N; i++) { int c, n; scanf("%d %d", &c, &n); if (n == 0) cost[i] = c; for (int j = 0; j < n; j++) { int task; scanf("%d", &task); cost[i] = max(cost[i], cost[task] + c); } ans = max(ans, cost[i]); } printf("%d", ans); } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 6497번 - 전력난 (C++) (0) | 2023.02.22 |
---|---|
[ 백준 ] 18223번 - 민준이와 마산 그리고 건우 (C++) (0) | 2023.02.21 |
[ 백준 ] 2406번 - 안정적인 네트워크 (C++) (0) | 2023.02.19 |
[ 백준 ] 20010번 - 악덕 영주 혜유 (C++) (0) | 2023.02.18 |
[ 백준 ] 1944번 - 복제 로봇 (C++) (0) | 2023.02.17 |