티스토리 뷰

알고리즘/백준

백준 2056 작업 C++

4567은 소수 2021. 6. 25. 17:45

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

 

2056번: 작업

수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해

www.acmicpc.net

대회 문제를 풀어야 하는데 논문 읽기에 눈이 침침해서 하나 풀어봤습니다. (이것도 빨리 해야되는데....)

간단한 위상정렬 문제였습니다. 작업에 걸리는 시간과 선행 작업이 주어졌을 때 전체 작업에 걸리는 최소시간을 구하는 문제입니다. 작업은 동시에 진행이 가능합니다. (문제 예시 : 같은 시간에 3, 4번 작업 수행)

 

위상 정렬을 이용하여 선행 작업에 대한 차수를 구하고, 차수가 0일 때마다 우선순위 큐에 (이전 작업 + 현재 노드의 작업) 을 넣습니다. 마지막 큐의 원소의 작업 시간이 최종 시간입니다.

 

코드는 다음과 같습니다.

 

 

 

 

'알고리즘 > 백준' 카테고리의 다른 글

백준 2212 센서  (0) 2021.07.06
백준 18870 좌표 압축 python3  (0) 2021.06.29
백준 1356 유진수 python3  (0) 2021.06.19
백준 2116 주사위 쌓기 C++  (0) 2021.06.19
백준 1174 줄어드는 숫자 python3  (0) 2021.06.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
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
글 보관함