From 419ba10f649ccac5a6b3daa84085030c687db2ef Mon Sep 17 00:00:00 2001 From: Taewon <71972587+fnzksxl@users.noreply.github.com> Date: Fri, 23 Feb 2024 16:56:17 +0800 Subject: [PATCH] =?UTF-8?q?2024-02-23=20=EC=88=9C=EC=9C=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fnzksxl/README.md | 1 + .../\354\210\234\354\234\204.py" | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 "fnzksxl/\352\267\270\353\236\230\355\224\204/\354\210\234\354\234\204.py" diff --git a/fnzksxl/README.md b/fnzksxl/README.md index 3c04842..3037e22 100644 --- a/fnzksxl/README.md +++ b/fnzksxl/README.md @@ -10,4 +10,5 @@ | 6차시 | 2024-02-14 | DP | [등굣길](https://school.programmers.co.kr/learn/courses/30/lessons/42898) | [#28](https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/28) | | 7차시 | 2024-02-18 | 그리디 | [구명보트](https://school.programmers.co.kr/learn/courses/30/lessons/42885) | [#30](https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/30) | | 8차시 | 2024-02-20 | DP | [동전1](https://www.acmicpc.net/problem/2293) | [#32](https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/32) | +| 9차시 | 2024-02-23 | 그래프 | [순위](https://school.programmers.co.kr/learn/courses/30/lessons/49191) | [#37](https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/37) | --- diff --git "a/fnzksxl/\352\267\270\353\236\230\355\224\204/\354\210\234\354\234\204.py" "b/fnzksxl/\352\267\270\353\236\230\355\224\204/\354\210\234\354\234\204.py" new file mode 100644 index 0000000..49163f4 --- /dev/null +++ "b/fnzksxl/\352\267\270\353\236\230\355\224\204/\354\210\234\354\234\204.py" @@ -0,0 +1,39 @@ +from collections import deque + +def func(n, graph, degree): + for i in range(1, n+1): + q = deque() + q.append(i) + + while q: + node = q.popleft() + + for next_node in graph[node]: + _before = len(degree[i]) + degree[i].add(next_node) + + if _before == len(degree[i]): + continue + + q.append(next_node) + +def solution(n, results): + answer = 0 + graph = [[] for _ in range(n+1)] + reversed_graph = [[] for _ in range(n+1)] + in_degree = [set() for _ in range(n+1)] + out_degree = [set() for _ in range(n+1)] + + for win, defeat in results: + graph[win].append(defeat) + reversed_graph[defeat].append(win) + + func(n, graph, out_degree) + func(n, reversed_graph, in_degree) + + + for i in range(1, n+1): + if len(out_degree[i])+len(in_degree[i]) == n-1: + answer += 1 + + return answer \ No newline at end of file