티스토리 뷰
"""
*packageName :
* fileName : 4963_섬의_개수_S2
* author : qkrtk
* date : 2022-04-07
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2022-04-07 qkrtk 최초 생성
"""
import sys
sys.setrecursionlimit(10 ** 6)
# DFS
def dfs(x, y):
if x >= w or x < 0 or y >= h or y < 0 or graph[y][x] == 0:
return False
graph[y][x] = 0
visited[y][x] = 1
dfs(x + 1, y)
dfs(x - 1, y)
dfs(x - 1, y + 1)
dfs(x + 1, y + 1)
dfs(x + 1, y - 1)
dfs(x - 1, y - 1)
dfs(x, y + 1)
dfs(x, y - 1)
while True:
w, h = map(int, input().split())
if w == 0 or h == 0:
sys.exit(0)
graph = []
for _ in range(h):
width = [list(map(int, input().split()))]
graph.extend(width)
cnt = 0
visited = [[0] * w for _ in range(h)]
for i in range(h):
for j in range(w):
if visited[i][j] == 0 and graph[i][j] == 1:
dfs(j, i)
cnt += 1
print(cnt)
-dfs 로 구현하였습니다. 재귀 경우의 수 1000을 초과할 수 있기에
sys.setrecursionlimit(10 ** 6)
- 해당 10 ** 6제곱까지 재귀 제한을 풀어줬습니다. >> DFS BFS 나 재귀 관련 문제는 대부분 해당 조건을 해제해야 합니다.
'코딩테스트 > 백준' 카테고리의 다른 글
[파이썬]2667_단지번호붙이기_S1.py (0) | 2022.04.19 |
---|---|
[파이썬]트리의_부모_찾기_S2_DFS (0) | 2022.04.08 |
[파이썬]1260_DFSBFS_S2 (0) | 2022.04.07 |
[파이썬]1202-보석도둑-백준-G2 (0) | 2022.04.02 |
[파이썬]2847-게임을-만든-동준이-백준-S4 (0) | 2022.04.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 킹
- 크레인 인형뽑기 게임
- 1063
- solved.ac
- java
- 백준
- ASCII코드
- Git
- stack
- 구현
- 자료표현
- 알고리즘
- 2진수
- 10진수
- 인형뽑기
- 2019 카카오 개발자 겨울 인턴십
- 자료구조
- 프로그래머스 # 음양더하기
- 브루트포스
- 프로그래머스
- 카카오 코딩테스트
- K번째수
- 코딩테스트
- 오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함