전에 올린 게시글과 중복이 아닙니다.
문제 이름이 똑같은거입니다.
이전 게시글(Advanced의 이진탐색)
현재 게시글(Intermediate의 이진탐색)
난이도 : D2
문제번호 : 5176
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
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 |
댓글