[핵심]
BFS 분류되는 이유는 결국 1과 붙어있는것들을 모두 제거할때 count가 증가하기떄문이다.
연습해야할 코딩 방식
1. dx dy를 이용한 좌표처리 그리고 경계값 -1일때 인덱스 에러 안나게 범위 설정해주는것
2. 재귀함수를 이용한것이 아니라 While문으로 활용
3. [0]*n으로 배열을 만들면 이상하게 다르게 값이 출력된다.. (이유는 아직 모름) 주소값을 공유하는 개념때문인가?
여러번 코딩해서 구조 익힐것
numcase = int(input())
dx = [-1,0,0,1]
dy = [0,1,-1,0]
def recu(x,y):
check = [[x,y]]
while check:
checka = check[0][0] #x,y값 저장
checkb = check[0][1]
del check[0]
for i in range(4):
X= checka +dx[i]
Y= checkb + dy[i]
if 0<=X<n and 0<= Y <m and lit[X][Y] == 1:
lit[X][Y] =0
check.append([X,Y])
for k in range(numcase):
count =0
n,m,case = map(int,input().split())
lit = [[0 for _ in range(m)] for __ in range(n)]
for q in range(case): #밭만들기
x,y = map(int,input().split())
lit[x][y] = 1
for i in range(n):
for j in range(m):
if lit[i][j] == 1:
recu(i,j)
lit[i][j] = 0
count = count+1
print(count)
'Data Science > 알고리즘 공부' 카테고리의 다른 글
[백준][파이썬] 2178 미로탈출 (최단거리) (0) | 2020.03.30 |
---|---|
[파이썬][백준] 2667 단지번호 붙이기 (0) | 2020.03.28 |
[파이썬][백준] 1012 GCD (0) | 2020.03.26 |
[백준][파이썬] 13015 별찍기(23) (0) | 2020.03.23 |
[백준][파이썬] 10991 별찍기(16) (0) | 2020.03.23 |
댓글