Skip to content

Commit 1dcace1

Browse files
committed
백준 9466번 텀 프로젝트 v2
문제 링크: https://www.acmicpc.net/problem/9466
1 parent 12f193b commit 1dcace1

File tree

4 files changed

+68
-0
lines changed

4 files changed

+68
-0
lines changed
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import sys
2+
from collections import deque
3+
4+
5+
def solve():
6+
input = sys.stdin.readline
7+
T = int(input().strip())
8+
9+
for _ in range(T):
10+
N = int(input().strip())
11+
dts = [0] + list(map(int, input().strip().split()))
12+
incoming = [0 for _ in range(len(dts))]
13+
for i in range(len(dts)):
14+
fr, to = i, dts[i]
15+
incoming[to] += 1
16+
17+
queue = deque()
18+
19+
for i in range(len(dts)):
20+
if incoming[i] == 0:
21+
queue.append(i)
22+
23+
while queue:
24+
fr = queue.popleft()
25+
to = dts[fr]
26+
incoming[to] -= 1
27+
if incoming[to] == 0:
28+
queue.append(to)
29+
30+
answer = 0
31+
for i in range(len(dts)):
32+
if incoming[i] == 0:
33+
answer += 1
34+
35+
print(answer)
36+
37+
if __name__ == '__main__':
38+
solve()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2
2+
7
3+
3 1 3 7 3 4 6
4+
8
5+
1 2 3 4 5 6 7 8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
3
2+
0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import sys
2+
from pathlib import Path
3+
from unittest import TestCase
4+
from main import solve
5+
6+
7+
class Test(TestCase):
8+
def my_solve(self, testcase_input):
9+
sys.stdin = open(testcase_input, 'r')
10+
stdout = sys.stdout
11+
sys.stdout = open('stdout.txt', 'w')
12+
solve()
13+
sys.stdout.close()
14+
sys.stdout = stdout
15+
16+
def test_solve(self, testcase_number: str):
17+
self.my_solve('test' + testcase_number + '.txt')
18+
self.assertEqual(
19+
Path('test' + testcase_number + '_answer.txt').read_text().strip(),
20+
Path('stdout.txt').read_text().strip())
21+
22+
def test1_solve(self):
23+
self.test_solve('1')

0 commit comments

Comments
 (0)