코딩테스트/BOJ

[백준] 트리의 부모찾기

박소민 2023. 2. 19. 14:54
트리의 부모찾기
 

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