트리의 부모찾기
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
from collections import deque
N=int(input())
cnt=0
queue=deque()
num=deque()
result=[]
for _ in range(N):
queue.append(int(input()))
q=queue.popleft()
for _ in range(N*2): #N에 대해 전부 push,pop 해야하므로
if cnt==q:
result.append("+")
result.append("-")
continue
if q not in num:
if cnt<N:
cnt+=1
num.append(cnt)
result.append("+")
if q in num:
result.append("-")
p=num.pop()
if (p!=q):
result.clear()
break
if queue:
q=queue.popleft() #앞의 수 빼고나면 새로 뽑기
if result:
for r in result:
print(r)
else:
print("NO")
from collections import deque
N=int(input())
cnt=0
queue=deque()
num=deque()
result=[]
for _ in range(N):
queue.append(int(input()))
q=queue.popleft()
def recur(q,queue,num,cnt): #N에 대해 전부 push,pop 해야하므로
#앞의 수 빼고나면 새로 뽑기
if q not in num:
if cnt<N:
cnt+=1
num.append(cnt)
result.append("+")
recur(q,queue,num,cnt)
if q in num:
result.append("-")
p=num.pop()
if (p!=q):
result.clear()
return
if queue:
q=queue.popleft()
recur(q,queue,num,cnt)
recur(q,queue,num,cnt)
if result:
for r in result:
print(r)
else:
print("NO")
from collections import deque
N=int(input())
cnt=0
queue=deque()
num=deque()
result=[]
for _ in range(N):
queue.append(int(input()))
q=queue.popleft()
for _ in range(N*2):
if q not in num:
if cnt<N:
cnt+=1
num.append(cnt)
result.append("+")
if q in num:
result.append("-")
p=num.pop()
if (p!=q):
result.clear()
break
if queue:
q=queue.popleft()
if result:
for r in result:
print(r)
else:
print("NO")'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준][실버4] 10825. 국영수 (0) | 2023.02.22 |
|---|---|
| [백준 15686] 치킨 배달 (0) | 2023.02.22 |
| [백준][실버 2] 11725. 트리의 부모찾기 (0) | 2023.02.18 |
| [백준] [실버2] 1260. DFS와 BFS (0) | 2023.02.18 |
| [백준] 2908.상수 (0) | 2023.02.17 |