꽃피우기
문제 설명
정사각형 크기 격자 모양 정원에 칸마다 핀 꽃 또는 피지 않은 꽃을 심었습니다.
이 정원의 꽃이 모두 피는 데 며칠이 걸리는지 알고 싶습니다.
핀 꽃은 하루가 지나면 앞, 뒤, 양옆 네 방향에 있는 꽃을 피웁니다.
현재 정원의 상태를 담은 2차원 리스트 garden이 주어졌을 때,
모든 꽃이 피는데 며칠이 걸리는지 return 하도록 solution 함수를 작성해주세요.
매개변수 설명
현재 정원 상태를 담은 2차원 리스트 garden이 solution 함수의 매개변수로 주어집니다.
정원의 한 변의 길이는 2 이상 100 이하입니다.
정원 상태를 담은 2차원 리스트 garden의 원소는 0 또는 1 입니다.
이미 핀 꽃은 1로 아직 피지 않은 꽃은 0으로 표현합니다.
정원에 최소 꽃 한 개는 피어 있습니다.
return 값 설명
꽃이 모두 피는데 며칠이 걸리는지 return 합니다.
예제
garden
|
return
|
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
|
2
|
[[1, 1], [1, 1]]
|
0
|
![](https://blog.kakaocdn.net/dn/dAbVYl/btrC89kLlvp/Dn8du1oMvHyicR3Gb7ITTK/img.jpg)
1일이 지난 정원의 상태는 아래와 같습니다.
![](https://blog.kakaocdn.net/dn/AhRSc/btrC7eHCHB2/TtdvqgsfEii1l7kkT23I50/img.jpg)
2일이 지난 정원의 상태는 아래와 같습니다.
![](https://blog.kakaocdn.net/dn/yiICp/btrC47BZSOb/dkKpQgO51PzcYFvOrIssG0/img.jpg)
![](https://blog.kakaocdn.net/dn/72jIE/btrC7JHr2k1/G5ETPkTwSUxFM9zquBT5J1/img.jpg)
따라서, 0일이 지나면 정원의 모든 꽃이 핍니다.
문제풀이
from collections import deque
def BFS(n, position) :
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
visited = [[False] * (n) for _ in range(n)]
distance = [[0] * (n) for _ in range(n)]
dq = deque(position) #1 좌표 큐에 넣기
#다수의 시작 점 방문 처리
for x, y in dq :
visited[x][y] = True
max_cnt = 0
while dq : #dq가 빌때까지
now_x, now_y = dq.popleft()
for d in range(4) :
next_x = now_x + dx[d]
next_y = now_y + dy[d]
if 0 <= next_x < n and 0 <= next_y < n and visited[next_x][next_y] is False :
dq.append((next_x, next_y))
distance[next_x][next_y] = distance[now_x][now_y] + 1
if max_cnt < distance[next_x][next_y] :
max_cnt = distance[next_x][next_y]
visited[next_x][next_y] = True
return max_cnt
def solution(n, garden):
answer = 0
position = []
for i in range(n) :
for j in range(n) :
if garden[i][j] == 1 :
position.append((i, j))
return BFS(n, position)
'코테풀이 > BFS' 카테고리의 다른 글
[백준 |골드5] 2206_벽 부수고 이동하기 (0) | 2022.07.16 |
---|---|
[백준 | 골드4] 2146_다리만들기(BFS, 떨어져있는 섬, 번호부여, 최단거리) (0) | 2022.07.15 |
[프로그래머스 | 레벨2] 거리두기 확인하기(BFS_다시풀기) (0) | 2022.05.03 |
[백준 | 골드5] 7576번 토마토(BFS, 우선 좌표 큐에 넣기) (0) | 2022.04.16 |
[인프런 | BFS] 사과나무(BFS, 마름모) (0) | 2022.04.14 |
[cos pro 1급] 꽃피는 봄이 언제오나요(BFS, 여러시작점)