[Python] 백준 2623 - 음악프로그램 문제 풀이
Overview
BOJ 2623번 음악프로그램 Python 문제 풀이
분류: Topological Sorting (위상정렬)
문제 페이지
https://www.acmicpc.net/problem/2623
풀이 코드
from sys import stdin
from collections import defaultdict, deque
from typing import List
graph = defaultdict(list)
indegrees = defaultdict(int)
def topology(n: int) -> List[int]:
dq = deque()
for i in range(1, n + 1):
if indegrees[i] == 0:
dq.append(i)
res = []
while dq:
node = dq.popleft()
res.append(node)
for neighbor in graph[node]:
indegrees[neighbor] -= 1
if indegrees[neighbor] == 0:
dq.append(neighbor)
if len(res) < n:
return [0]
else:
return res
def main():
def input():
return stdin.readline().rstrip()
n, m = map(int, input().split())
for _ in range(m):
order = list(map(int, input().split()))
for i in range(1, len(order) - 1):
graph[order[i]].append(order[i + 1])
indegrees[order[i + 1]] += 1
print(*topology(n), sep="\n")
if __name__ == "__main__":
main()
Topological Sorting을 이용하여 순서를 구한다.
각 pd별로 가수 순서를 입력 받으면 graph
와 indegrees
에 다음 가수와 진입 차수를 저장한다. 그 다음 진입 차수가 0인 가수들을 탐색하며 순서를 구한다.
Author And Source
이 문제에 관하여([Python] 백준 2623 - 음악프로그램 문제 풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@boorook/Python-백준-2623-음악프로그램-문제-풀이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)