Notice
Recent Posts
Recent Comments
Link
관리 메뉴

one by one ◼◻◼◻

백준 2667 단지번호 붙이기 본문

코딩문제

백준 2667 단지번호 붙이기

JihyunLee 2022. 6. 16. 16:06

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 단지 번호붙이기
import sys
from collections import deque
 
dx = [-1,1,0,0]
dy = [0,0,-1,1]
= int(sys.stdin.readline().split()[0])
x,y = N,N
data = [[0* y for _ in range(x)]
visit = [[0* y for _ in range(x)]
 
 
for i in range(x):
    line = list(sys.stdin.readline().split()[0])
    for j, temp in enumerate(line):
        data[i][j] = int(temp)
 
living = []
danji = 0
togo = deque()
for i in range(x):
    for j in range(y):
        if data[i][j] == 1 and visit[i][j] == 0:
            danji +=1
            apart = 0
            togo.append((i,j))
            visit[i][j] = 1
            while togo:
                x_, y_ = togo.popleft()
                apart += 1
                for k in range(4):
                    x_move, y_move = x_ +dx[k], y_ + dy[k]
                    if x_move >=0 and y_move>=0 and x_move<and y_move<y:
                        if data[x_move][y_move] == 1 and visit[x_move][y_move]==0:
                            visit[x_move][y_move] =1
                            togo.append((x_move, y_move))
            living.append(apart)
 
living = sorted(living)
 
print(danji)
for l in living:
    print(l)
 
 
 
 
 
 
cs
Comments