문제
백준 2529
설명
n 이 작아서 브루트포스로 풀어도 되긴하는데, 정석은 위상정렬로 푸는 것임.
위 예시는 위처럼 그림으로 나타낼 수 있다.
- 이때 부등호를 Directed Edge 로 간주하면 위 그래프는 항상 DAG 가 된다는 점이 중요하다.
- 부등호를 받아드리는 방향에 따라 두가지 버전의 DAG 가 만들진다.
가장 큰 숫자를 만들기 위해선 높은 자리에서 가장 큰 숫자부터 줘야함
- 이를 위해선 위상정렬로 큰 값을 줘야하는 Idx 부터 구하고
- 우선순위 큐를 통해서 낮은 Idx 부터 큰숫자를 부여해야함
가장 작은 숫자를 만들기 위해선 가장 작은 숫자부터 줘야함
- 이를 위해선 위상정렬로 작은 값을 줘야하는 Idx 부터 구하고
- 우선순위 큐는 똑같이 진행함.
시간 복잡도
O(\(N\log{N}\))
코드
댓글남기기