Skip to content

Commit f17ef27

Browse files
authored
11724,2667 (#62)
1 parent 48e6966 commit f17ef27

File tree

3 files changed

+132
-0
lines changed

3 files changed

+132
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#solved.ac
2+
#실버2
3+
#DFS&BFS
4+
#연결 요소의 갯수
5+
#11724
6+
7+
#BFS 풀이
8+
import sys
9+
from collections import deque
10+
11+
input = sys.stdin.readline
12+
13+
def bfs(start):
14+
if visited[start]:
15+
return False
16+
q = deque([start])
17+
18+
while q:
19+
v = q.popleft()
20+
visited[v]=True
21+
22+
for edge in edges[v]:
23+
if not visited[edge]:
24+
visited[edge]=True
25+
q.append(edge)
26+
return True
27+
28+
N,M = map(int,input().split())
29+
#인접리스트
30+
edges = [[] for _ in range(N+1)]
31+
cnt = 0
32+
for i in range(M):
33+
a,b = map(int,input().split())
34+
edges[a].append(b)
35+
edges[b].append(a)
36+
visited = [False for _ in range(N+1)]
37+
38+
for i in range(1,N+1):
39+
if bfs(i):
40+
cnt+=1
41+
42+
print(cnt)
43+
44+
45+
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#solved.ac
2+
#실버2
3+
#DFS&BFS
4+
#연결 요소의 갯수
5+
#11724
6+
7+
#dfs 풀이
8+
import sys
9+
input = sys.stdin.readline
10+
sys.setrecursionlimit(10**7)
11+
12+
def dfs(start):
13+
if visited[start]:
14+
return False
15+
visited[start]=True
16+
17+
for v in edges[start]:
18+
if not visited[v]:
19+
dfs(v)
20+
return True
21+
22+
N,M = map(int,input().split())
23+
#인접리스트
24+
edges = [[] for _ in range(N+1)]
25+
cnt = 0
26+
for i in range(M):
27+
a,b = map(int,input().split())
28+
edges[a].append(b)
29+
edges[b].append(a)
30+
visited = [False for _ in range(N+1)]
31+
for i in range(1,N+1):
32+
if dfs(i):
33+
cnt+=1
34+
35+
print(cnt)
36+
37+
38+

syheo/codingTest1/Baekjoon/2667.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#solved.ac
2+
#실버2
3+
#DFS&BFS
4+
#단지 번호 붙이기
5+
#2667
6+
7+
import sys
8+
from collections import deque
9+
input = sys.stdin.readline
10+
11+
moves = [(1,0),(0,1),(-1,0),(0,-1)]
12+
13+
def bfs(row,col,N):
14+
cnt = 0
15+
#시작 좌표 큐에 넣어줌
16+
q = deque([(row,col)])
17+
visited[row][col]=True
18+
while q:
19+
row,col = q.popleft()
20+
cnt+=1
21+
for move in moves:
22+
r = row+move[0]
23+
c = col+move[1]
24+
if 0<=r<=N-1 and 0<=c<=N-1:
25+
if maps[r][c]==1 and not visited[r][c]:
26+
q.append((r,c))
27+
visited[r][c]=True
28+
return cnt
29+
30+
31+
N = int(input())
32+
visited=[[False]*N for i in range(N)]
33+
maps = []
34+
cntList = []
35+
#입력
36+
for i in range(N):
37+
maps.append(list(map(int,list(input().rstrip()))))
38+
39+
#bfs 방문
40+
for i in range(N):
41+
for j in range(N):
42+
if not visited[i][j] and maps[i][j]:
43+
cnt = bfs(i,j,N)
44+
cntList.append(cnt)
45+
46+
cntList.sort()
47+
print(len(cntList))
48+
for cnt in cntList:
49+
print(cnt)

0 commit comments

Comments
 (0)