백준 - 섬의 개수(#4963)
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
dx = [1,-1,0,0,1,-1,1,-1]
dy = [0,0,1,-1,1,-1,-1,1]
def dfs(i,j):
for k in range(8):
nx = i + dx[k]
ny = j + dy[k]
if nx<0 or ny<0 or nx>N-1 or ny>M-1:
continue
if maps[nx][ny]==0:
continue
maps[nx][ny]=0
dfs(nx,ny)
return
answer = []
while True:
M,N = map(int,input().split())
if N==0 and M==0:
break
maps = [list(map(int,input().split())) for _ in range(N)]
count = 0
for i in range(N):
for j in range(M):
if maps[i][j]==1:
maps[i][j]=0
dfs(i,j)
count+=1
answer.append(count)
for i in answer:
print(i)
- 백준 - 섬의 개수(#4963)
- 백준 - 치즈(#2638)
- 백준 - 점프 점프(#11060)
- 백준 - 나무 자르기(#2805)
- 백준 - 회의실 배정(#1931)
- 백준 - 단지번호붙이기(#2667)
- 백준 - 미로 탐색(#2178)
- 백준 - DFS와 BFS(#1260)
- 백준 - 가장 긴 증가하는 부분 수열(#11053)
- 백준 - 계단 오르기(#2579)
- 백준 - 유기농 배추(#1012)
- 백준 - 평범한 배낭(#12865)
- 소프티어 - 조립라인
- 소프티어 - 슈퍼컴퓨터 클러스터
- 프로그래머스 - 타겟넘버
- 프로그래머스 - 네트워크
- 프로그래머스 - 단속카메라
- 프로그래머스 - 올바른 괄호
- 프로그래머스 - 튜플
- 프로그래머스 - 여행 경로
- 프로그래머스 - 구명보트
- 프로그래머스 - 주차 요금 계산
- 프로그래머스 - 짝지어 제거하기
- 프로그래머스 - 예상 대진표
- 프로그래머스 - 멀리 뛰기
- 프로그래머스 - 단어 변환
- 프로그래머스 - 더 맵게
- 프로그래머스 - 기능 개발
- 프로그래머스 - 전화번호 목록
- 프로그래머스 - 베스트앨범
- 프로그래머스 - 위장
- 프로그래머스 - 전력망을 둘로 나누기
- 프로그래머스 - 모의고사
- 프로그래머스 - 야근 지수
- 프로그래머스 - 같은 숫자는 싫어
- 프로그래머스 - 소수 찾기
- 프로그래머스 - 프린터
- 프로그래머스 - 주식 가격
- 프로그래머스 - 다리 위를 지나는 트럭
- 프로그래머스 - 이중우선순위큐