- 문제 : SWEA 1861. 정사각형방2
- 난이도 : D4
- 언어 : python
- 문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LtJYKDzsDFAXc
def bfs(y, x):
queue = []
room_lst = []
queue.append((y, x))
room_lst.append(arr[y][x])
visited[y][x] = 1
while queue:
cy, cx = queue.pop(0)
for dy, dx in [(-1, 0), (1, 0), (0, 1), (0, -1)]:
ny, nx = cy + dy, cx + dx
if 0 <= ny < N and 0 <= nx < N and abs(arr[ny][nx] - arr[cy][cx]) == 1 and visited[ny][nx] == 0:
queue.append((ny, nx))
room_lst.append(arr[ny][nx])
visited[ny][nx] = 1
return min(room_lst), len(room_lst)
T = int(input())
for tc in range(1, T + 1):
N = int(input())
arr = [list(map(int, input().split())) for _ in range(N)]
visited = [[0] * N for _ in range(N)]
room_cnt = 0
room_n = 1001
for i in range(N):
for j in range(N):
c_num, c_cnt = bfs(i, j)
if room_cnt < c_cnt or room_cnt == c_cnt and room_n > c_num:
room_n = c_num
room_cnt = c_cnt
print('#{} {} {}'.format(tc, room_n, room_cnt))
arr을 순회시키며 bfs적용. 방문 표시를 통해 방문표시 된 곳은 재방문 x, 좌표당 방문한 방의 총 개수와 방 번호를 비교하여 최종적으로 최대 방 개수와, 최소 방 번호 출력
'SWEA' 카테고리의 다른 글
SWEA 1486. 장훈이의 높은 선반 [Python] (0) | 2022.03.27 |
---|---|
SWEA 4615. 재미있는 오셀로 게임 [Python] (0) | 2022.03.27 |
SWEA 2382. 미생물 격리 [Python] (0) | 2022.03.25 |
SWEA 1238. Contact [Python] (0) | 2022.03.24 |
SWEA 5105. 미로의 거리 [Python] (0) | 2022.03.24 |