완전 이진트리. 어차피 배열 인덱스랑 같은 노드값 가지므로 배열 번호대로 루트까지 타고 올라가는 방법을 사용.
import sys
input = sys.stdin.readline
N, Q = map(int,input().split())
owned = [False for _ in range(N+1)]
for _ in range(Q):
dest = int(input())
tmp = dest
flag = 0
while tmp != 1:
if owned[tmp]:
flag = 1
first_owned = tmp
if tmp%2:
tmp -= 1
tmp //= 2
if flag:
print(first_owned)
else:
owned[dest] = True
print(0)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 9372 상근이의 여행 (0) | 2021.08.12 |
---|---|
[백준][Python] 18808 스티커 붙히기 (0) | 2021.08.11 |
[백준][Python] 2096 내려가기 (0) | 2021.08.11 |
[백준][Python] 15961 회전초밥 : 슬라이딩 윈도우 연습 (0) | 2021.08.11 |
[백준][Python] 6549 히스토그램에서 가장 큰 직사각형 (0) | 2021.08.10 |