Skip to content

Commit 905a894

Browse files
committed
백준 2252번 줄 세우기
문제 링크: https://www.acmicpc.net/problem/2252
1 parent 4709d1b commit 905a894

File tree

6 files changed

+70
-0
lines changed

6 files changed

+70
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import sys
2+
from collections import defaultdict
3+
4+
5+
def solve():
6+
input = sys.stdin.readline
7+
N, M = map(int, input().strip().split())
8+
edges_fr2to = defaultdict(list)
9+
incoming = [0 for _ in range(N + 1)]
10+
11+
for _ in range(M):
12+
fr, to = map(int, input().strip().split())
13+
edges_fr2to[fr].append(to)
14+
incoming[to] += 1
15+
16+
queue = []
17+
for n in range(1, N + 1):
18+
if incoming[n] == 0:
19+
queue.append(n)
20+
21+
ans = []
22+
while queue:
23+
fr = queue.pop(0)
24+
ans.append(fr)
25+
26+
while edges_fr2to[fr]:
27+
to = edges_fr2to[fr].pop(0)
28+
incoming[to] -= 1
29+
if incoming[to] == 0:
30+
queue.append(to)
31+
32+
print(' '.join(map(str, ans)))
33+
34+
35+
if __name__ == '__main__':
36+
solve()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
3 2
2+
1 3
3+
2 3
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1 2 3
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
4 2
2+
4 2
3+
3 1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
4 2 3 1
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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')
24+
25+
def test2_solve(self):
26+
self.test_solve('2')

0 commit comments

Comments
 (0)