전에 올린 게시글과 중복이 아닙니다.
문제 이름이 똑같은거입니다.
이전 게시글(Advanced의 이진탐색)
현재 게시글(Intermediate의 이진탐색)
난이도 : D2
문제번호 : 5176
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
1부터 N까지의 자연수를 이진 탐색 트리에 저장하려고 한다. |
입력
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50 |
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. |
예시
입력 | 출력 |
3 6 8 15 |
#1 4 6 #2 5 2 #3 8 14 |
2. 문제풀이
N이 주어지면 트리를 만든다음에 루트노드와 N/2번 노드를 출력하면 된다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#D2 5176 이진탐색
def makeTree(n):
global count
#배열이니까 배열크기 넘어가지 않도록
if n <= N:
#왼쪽노드는 현재 인덱스의 2배
makeTree(n*2)
#더이상 못가면 값넣기
tree[n] = count
#값 넣었으면 증가시키기
count += 1
#우측 노드는 인덱스 2배 + 1
makeTree(n*2 + 1)
for t in range(int(input())):
N = int(input())
tree = [0 for i in range(N+1)]
count = 1
makeTree(1)
print('#{} {} {}'.format(t+1, tree[1], tree[N//2]))
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
이진수2 Python(SW Expert Academy) (0) | 2020.05.15 |
---|---|
이진수 Python(SW Expert Academy) (0) | 2020.05.14 |
이진탐색 Python(SW Expert Academy) (0) | 2020.05.12 |
수열 편집 Python(SW Expert Academy) (0) | 2020.04.17 |
숫자 추가 Python(SW Expert Academy) (0) | 2020.04.16 |
댓글