[파이썬] 백준 20304 : 비밀번호 제작 (플레5)
풀이
방향성 생각
사용한 비밀번호는 안전거리가 0이다.
다익처럼 풀면 시간초과할듯?
- 최대 10만개에서 힙에다가 계속 넣어버림.
- BFS는 어짜피 100만 2^10~2^11이라 각 자리수에서 최대 11?번이면 도달
비트연산으로 해밍거리 1인거부터 차례로 이동하면 OK
전체코드
from collections import deque
N = int(input())
M = int(input())
arr = list(map(int,input().split()))
V = [-1]*(N+1)
for a in arr:
V[a] = 0
leng = len(bin(N))-2
Q = deque(list(zip(arr,[0]*N)))
while Q:
x,t = Q.popleft()
for l in range(leng):
nx = x^(1<<l)
if 0<=nx<=N and V[nx] == -1:
V[nx] = t+1
Q.append((nx,t+1))
print(max(V))
코멘트
- 이왜플?
'Algorithm > Graph' 카테고리의 다른 글
[파이썬] 백준 2325 : 개코전쟁 (플레5) (0) | 2024.11.27 |
---|---|
[파이썬] 백준 28032: Filed Day (플레2) (0) | 2024.11.26 |
[파이썬] 백준 1473 : 미로 탈출 (플레5) (0) | 2024.11.26 |
[파이썬] 백준 3197 : 백조의 호수 (플레5) (0) | 2024.11.23 |
[파이썬] 백준 14868 : 문명 (플레4) (0) | 2024.11.22 |
[파이썬] 백준 11779 : 최소비용 구하기 2 (골드3) (0) | 2024.11.21 |
[파이썬] 백준 1916 : 최소비용 구하기 (골드5) (0) | 2024.11.21 |
댓글