Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Git
- python자료형
- c언어
- 코딩테스트
- 코테
- 파이썬 알고리즘 인터뷰
- 스택
- 그리디
- #코린이 #코딩 #할 수 있다
- c언어 기본
- 자료구조
- c언어 제어문
- 참고X
- 최단거리
- 5장
- python기본
- Workbench
- DP
- git오류
- 인스타
- 데베시 1주차
- 운체 1주차
- git기초
- 4장
- git 오류
- 백준
- 인텔리제이
- python기초
- 도커
- 1주차(1)
Archives
- Today
- Total
하루살이 개발자
[BaekJoon 2667번] 단지번호붙이기 문제(Python) 본문
단지번호붙이기 문제입니다.
문제링크: https://www.acmicpc.net/problem/2667
2667번: 단지번호붙이기
<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여
www.acmicpc.net
Code
def dfs(x, y):
global count
if x <= -1 or x >= n or y <= -1 or y >= n: # 주어진 범위를 벗어나는 경우
return False
if graph[x][y] == 1: # 현재 노드를 아직 방문하지 않은 경우
graph[x][y] = 0 # 방문 처리
count += 1
# 동서남북 위치들 모두 재귀적으로 호출
dfs(x - 1, y)
dfs(x, y - 1)
dfs(x + 1, y)
dfs(x, y + 1)
return True
return False
n = int(input()) # 정사각형
num = 0
graph = []
for i in range(n):
graph.append(list(map(int, input())))
# 단지
num = []
# 각 단지별 수
count = 0
for i in range(n):
for j in range(n):
if dfs(i, j) == True:
# 각 단지마다 count 추가
num.append(count)
count = 0
# 단지 개수
print(len(num))
# 오름차순 정렬
num.sort()
for i in range(len(num)):
print(num[i])
'코딩테스트' 카테고리의 다른 글
[BaekJoon 1922번] 네트워크 연결 문제(Python) (0) | 2022.02.23 |
---|---|
[BaekJoon 1197번] 최소스패닝트리 문제(Python) (0) | 2022.02.23 |
[BaekJoon 1260번] DFS와 BFS 문제(Python) (0) | 2022.02.23 |
[BaekJoon 9020번] 골드바흐의 추측 문제(Python) (0) | 2022.02.20 |
[BaekJoon 4948번] 베르트랑 공준(Python) (0) | 2022.02.20 |