이전풀이
깊이 우선탐색 이라고 생각했다. 문제를 풀다보니 너비 우선탐색인 것을 알아냈다. - 너비 탐색에서 어려운것은 항상 그 레벨을 표시하는 방법 같다. 옛날에도 이 비슷한 문제 봤었는데 외워야 겠다.
풀이를 안보고 풀때 풀이가 또 달랐다. bfs를 이용하긴 했으나 최단 거리를 계속 갱신해줬다.
동빈북은 이미 방문 했다면(거리가 최대가 아닐 때) 따져줄 필요가 없다고 생각한 것 같다. 어차피 bfs니까 레벨별로 검사하니까 앞에서 검사하는 친구가 최소 값일 것이다.
그러나 시간초과는 계속 되었다.
왜 시간 초과가 계속 되나 했더니 distance 집합 안에 이미 target이 있는지 확인을 먼저 해주고 없다면 -1을 재빠르게 해줘야 했던 부분
요기 때문이었다. ㅎㅎ
def dfs(count):
global result
# 울타리가 3개 설치된 경우
if count == 3:
for i in range(n):
for j in range(m):
temp[i][j] = data[i][j]
# 각 바이러스의 위치에서 전파 진행
for i in range(n):
for j in range(m):
if temp[i][j] == 2:
virus(i, j)
# 안전 영역의 최대값 계산
result = max(result, get_score())
return
# 빈 공간에 울타리를 설치
for i in range(n):
for j in range(m):
if data[i][j] == 0:
data[i][j] = 1
count += 1
dfs(count)
data[i][j] = 0
count -= 1
TypeError: unhashable type: 'set'
https://stackoverflow.com/questions/23577724/type-error-unhashable-typeset
a = [1,2,3]
a = tuple(a)
https://codechacha.com/ko/python-sort-tuple/
x = ('a', 'b')
x = tuple(sorted(x, key = lambda x : x))