티스토리 뷰
728x90
반응형
https://www.acmicpc.net/problem/1012
나의 풀이
from collections import deque
def bfs(x,y):
queue = deque([])
dx,dy = [-1,1,0,0],[0,0,-1,1] #방향 상하좌우 판단 위해
#큐에 넣기
queue.append([x,y])
while queue:#초기 배추에서 인접한 배추의 인접한 배추까지 모두 찾기
x,y = queue.popleft()
#상하좌우 인접한 배추 있는지 찾기
for i in range(4):
nx,ny = dx[i]+x, dy[i]+y
if 0 <= nx < m and 0 <= ny < n:
#인접한 배추가 있다면 0으로 만들고 큐에 넣기(해당 배추의 인접한 배추 또 찾아야하므로)
if flag[nx][ny]==1:
flag[nx][ny] = 0
queue.append([nx,ny])
T = int(input())
for i in range(T):
count=0
m,n,k = map(int,input().split())
arr = [list(map(int,input().split())) for _ in range(k)] #좌표 입력받기
flag = []
#모두 0으로 채워져있는 이중리스트 flag 만들기
for i in range(m):
tmp = []
for j in range(n):
tmp.append(0)
flag.append(tmp)
#배추가 있는 좌표의 flag값을 1로 만들기
for item in arr:
flag[item[0]][item[1]]=1
#원래 여기서 bfs를 돌렸는데 flag의 초기 1을 모두 설정한 후에 해주어야 했다.
#모두 1로 설정된 후에 하면 bfs 수행 결과가 반환되므로 모두 1로 설정 후에 bfs를 수행해야 한다.
#bfs(item[0],item[1])
#count+=1
count = 0
for i in range(m):
for j in range(n):
#배추가 심어져 있다면
if flag[i][j]==1:
#print("i,j:",end=' ')
#print(i,j)
#bfs를 수행하여 인접한 배추의 인접한 배추까지 모두 찾고 count 1더하기
bfs(i,j)
count+=1
print(count)
bfs로 푸는 문제였다. 왜 이리 어렵냐 ^^ .. ㅋㅋ ~
일단 재귀로는 절대 못풀겠고 .. 저 위 주석 부분에 flag에 1값 바꿔주면서 동시에 bfs하면 안됐었는데 인지를 못해서 한참 헤맸다 ...
인터넷 참고해서 풀었는데 더 연습해야 할 것 같다 ..
반응형
'알고리즘 > Baekjoon' 카테고리의 다른 글
[CodingTest] 백준 #11399 ATM (0) | 2022.01.16 |
---|---|
[CodingTest] 백준 python #3273 두 수의 합 (0) | 2022.01.14 |
[CodingTest] 백준 #10871 X보다 작은 수 (0) | 2021.12.23 |
[CodingTest] 백준 #1920 수 찾기 (0) | 2021.12.20 |
[CodingTest] 백준 #11286 절댓값 힙 (0) | 2021.12.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바
- 장고
- 자바스크립트
- append
- 스프링
- Django
- 정렬
- 덱
- 프로그래머스
- 백준
- 큐
- javascript
- CSS
- 파이썬
- jsp
- web
- brute force
- jQuery
- bootstrap
- 브루트 포스
- 문자열
- baekjoon
- 고득점 키트
- Oracle
- html
- 단계별로풀어보기
- R
- Java
- Case When
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함