ํ์ด ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค
- ๋ค์ด์จ ์ซ์๋ฅผ ์ด์งํธ๋ฆฌ ๋ ธ๋ ๊ฐฏ์ (2**N - 1) ํํ์ ์ด์ง์๋ก ๋ณ๊ฒฝํ๋ค ex) 42 -> 0101010
- DFS ๋ฅผ ํ์ฉํด ๋ถ๋ชจ๊ฐ 0์ธ๋ฐ ์์์ด 1์ธ ๋
ธ๋๋ฅผ ์ฐพ๋๋ค.
- ์์ผ๋ฉด return 0
- ์์ผ๋ฉด return 1
import math
def DFS(binary, parent):
# print(binary, parent)
if len(binary) == 1:
if parent == 0 and int(binary) == 1:
# print("return 0 " )
return 0
else :
return 1
mid_index = math.floor(len(binary)/2)
root = int(binary[mid_index])
if parent == 0 and root == 1:
return 0
left_node = binary[:mid_index]
right_node = binary[mid_index+1:]
return min (DFS(left_node, root) ,DFS(right_node, root))
def solution(numbers):
answer = []
height = 0
for number in numbers :
binary_number = bin(number)[2:]
log2_binary_len = math.log2(len(binary_number)+1)
if log2_binary_len == int(log2_binary_len) :
height = log2_binary_len
else :
height = math.ceil(log2_binary_len)
binary_number = '0' * (2**height-1 - len(binary_number)) +binary_number
mid_index = math.floor(len(binary_number)/2)
# print(binary_number)
answer.append(DFS(binary_number, int(binary_number[mid_index])))
return answer
'๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค ํ๋ธ ์ฐ๋ํ๊ธฐ (0) | 2024.01.16 |
---|---|
๋ฏธ๋ก ํ์ถ ๋ช ๋ น์ด (0) | 2023.02.02 |
์ธ์ฌ๊ณ ๊ณผ (0) | 2023.01.30 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 1 ๋ค ํ๊ณ (0) | 2022.08.11 |
2022-08-08 ํ๋ก๊ทธ๋๋จธ์ค ์ธ์ฆ 100๋ฌธ์ ๋ฌ์ฑ (0) | 2022.08.08 |