250x250
Notice
Recent Posts
Recent Comments
Link
상봉동개발자
[백준] 2468 본문
728x90
안전영역 (2468번)
- 사이트/난이도: 백준 / 실버1
- 코드
# 실버1 안전 영역
def bfs(x, y):
q = deque([])
q.append((x, y))
visited[x][y] = True
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < n:
if not visited[nx][ny]:
visited[nx][ny] = True
q.append((nx, ny))
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]
max_val = 1
for i in range(n):
for j in range(n):
max_val = max(max_val, graph[i][j])
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
answer = 0
for h in range(max_val+1):
visited = [[False] * n for _ in range(n)]
result = 0
for i in range(n):
for j in range(n):
if graph[i][j] <= h:
visited[i][j] = True
for i in range(n):
for j in range(n):
if not visited[i][j]:
result += 1
bfs(i, j)
answer = max(result, answer)
print(answer)
- 느낀점
- 기본적인 bfs 문제
- 0부터 최대 높이까지 반복문을 돌면서 해당 높이보다 작은 칸들은 방문처리 해놓는다.
- 그리고 방문하지 않은 칸을 볼떄마다 결과값을 1씩 증가시키고 bfs를 돌린다.
728x90
'코테준비' 카테고리의 다른 글
| [백준] 1339, 2812 (0) | 2022.11.10 |
|---|---|
| [백준] 1916 (0) | 2022.11.06 |
| [백준] 1744, 11000 (0) | 2022.11.04 |
| [백준] 1753, 1654, 1012, 2206 (0) | 2022.11.02 |
| [백준] 16926, 1946, 1715, 16953 (0) | 2022.11.01 |
Comments