728x90
반응형
Python
from collections import deque
n = int(input())
area = []
h = set()
for _ in range(n):
area.append(list(map(int, input().split())))
h = h | set(area[-1])
h =list(h)
dx=[0,0,1,-1]
dy=[1,-1,0,0]
cnt = 1
while h:
k = h[-1]
temp = 0
visit = [[0]*n for _ in range(n)]
q = deque()
for i in range(n):
for j in range(n):
if visit[i][j] != 0 or area[i][j] <= k:
continue
visit[i][j]=1
q.append([i,j])
temp+=1
while q:
pos = q.popleft()
for ii in range(4):
nx = pos[0]+dx[ii]
ny = pos[1]+dy[ii]
if 0<=nx<n and 0<=ny<n and visit[nx][ny]==0:
if area[nx][ny]>k:
visit[nx][ny] = visit[pos[0]][pos[1]]+1
q.append([nx,ny])
#print(k,temp)
cnt = max(cnt,temp)
h.pop()
print(cnt)
짧은 풀이
set()의 합집합 기능을 이용하여
모든 높이를 중복하지 않고 하나씩 받았음
하나씩 제외해보면서 최대값을 찾음
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준] [Python] 1759번 암호 만들기 - 백트래킹 (0) | 2021.05.12 |
---|---|
[백준] [Python] 6603번 로또 - 백트래킹 (0) | 2021.05.11 |
[백준] [Python] 7562번 나이트의 이동 - BFS (0) | 2021.05.11 |
[백준] [USACO-Bronze] [Python] 적록색약 - BFS (0) | 2021.05.11 |
[백준] [Python] 15654번 N과 M (5) - 백트래킹 (0) | 2021.05.09 |