alpyrithm_알파이리즘
[알고리즘][Python] 백준(BOJ) 16940 BFS 스페셜 저지_파이썬 본문
16940 BFS 스페셜 저지 www.acmicpc.net/problem/16940
문제 풀기 전 공부할 것 : 그래프 이론, 그래프 탐색, 너비 우선 탐색
풀이 1
<코드>
import sys
input = sys.stdin.readline
def solve():
n = int(input())
tree = [set() for _ in range(n+1)]
tree[0].add(1)
for _ in range(n-1):
a, b = map(int, input().split())
tree[a].add(b)
tree[b].add(a)
que = [0]
idx = 0
answer = list(map(int, input().split()))
for x in answer:
while x not in tree[que[idx]]:
idx += 1
if idx == len(que):
return 0
que.append(x)
return 1
print(solve())
풀이 2
<내용>
- python은 시간 초과, pypy는 성공
<코드>
from collections import deque
import sys
input = sys.stdin.readline
def solve():
n = int(input())
tree = [[] for _ in range(n)]
for _ in range(n-1):
a, b = map(int, input().split())
tree[a-1].append(b-1)
tree[b-1].append(a-1)
answer = list(map(int, input().split()))
answer = [a-1 for a in answer]
if answer[0] != 0:
return 0
idx = 1
check = [0] * n
que = deque([0])
check[0] = 1
while que:
x = que.popleft()
if not tree[x]:
continue
nex = []
for i in tree[x]:
if not check[i]:
nex.append(i)
check[i] = 1
l = len(nex)
for k in range(idx, idx+l):
if answer[k] in nex:
que.append(answer[k])
else:
return 0
idx += l
return 1
print(solve())
728x90
반응형
'Algorithm > 백준 알고리즘_Python' 카테고리의 다른 글
[알고리즘][Python] 백준(BOJ) 16917 양념 반 후라이드 반_파이썬 (0) | 2020.11.13 |
---|---|
[알고리즘][Python] 백준(BOJ) 16968 차량 번호판 1_파이썬 (0) | 2020.11.12 |
[알고리즘][Python] 백준(BOJ) 17103 골드바흐 파티션_파이썬 (0) | 2020.11.10 |
[알고리즘][Python] 백준(BOJ) 17087 숨바꼭질 6_파이썬 (0) | 2020.11.09 |
[알고리즘][Python] 백준(BOJ) 5635 생일_파이썬 (0) | 2020.11.08 |
Comments