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
- DP
- BFS
- parklab
- likelion
- likelionlikelion
- TiL
- folium
- ux·ui디자인
- seaborn
- DFS
- 프로젝트
- pyhton
- 그리디
- 시각화
- 멋쟁이사자처럼
- SQL
- Plotly
- Join
- 멋재이사자처럼
- 인턴10
- 마이온컴퍼니
- GIS
- 파이썬
- 멋사
- 마이온
- 알고리즘
- Python
- intern10
- GNN
- 멋쟁이사자처럼멋쟁이사자처럼
Archives
- Today
- Total
지금은마라톤중
[백준] 2667번 단지번호붙이기 본문
이 문제 역시 그래프 탐색 문제입니다.
접근법
- DFS로 접근
- DFS로 탐색하면서 cnt를 증가하여 단지 내 건물 수 체크
- 건물 수 담은 리스트 활용하여 결과 출력
n = int(input())
matrix = []
visited = [[False] * n for _ in range(n)]
cnt_list = []
dx = [0,0,1,-1]
dy = [1,-1,0,0]
# mapping matrix
for _ in range(n):
m = input()
matrix.append(m)
def dfs(matrix,x,y,visited):
global cnt
if x < 0 or x >= n or y < 0 or y >= n :
return 0
if matrix[y][x] == "0" or visited[y][x] :
return 0
visited[y][x] = True
cnt = 1
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
cnt += dfs(matrix, nx,ny,visited)
return cnt
for b in range(n):
for a in range(n):
if matrix[b][a] == "1" and not visited[b][a]:
cnt = 0
cnt_list.append(dfs(matrix, a,b, visited))
cnt_list.sort()
print(len(cnt_list))
for i in cnt_list:
print(i)
그래프 탐색에 조금 더 익숙해진 느낌입니다.
역시 문제를 많이 풀어보는게 중요한 것 같습니다.
'STUDY > Python 알고리즘' 카테고리의 다른 글
[이론] DP(Dynamic Programming, 동적 계획법) (1) | 2024.04.04 |
---|---|
[백준] 111724번 연결 요소의 개수 (0) | 2024.04.02 |
[백준] 2644번 촌수계산 (0) | 2024.03.26 |
[백준] 1012번 유기농배추 (0) | 2024.03.25 |
[백준] 1260번 DFS와 BFS (1) | 2024.03.22 |
Comments