똥그래미 코딩공장
백준 1920번(수 찾기) 파이썬 본문
https://www.acmicpc.net/problem/1920
1920번: 수 찾기
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들
www.acmicpc.net
오늘은 BST 문제를 풀어보았다.
BST문제도 코딩테스트에 간간히 나오기도 하고 학교 수업때 이론으로 배운거라 실제로 문제로도 풀어보고 싶었다.
뭔가 처음에 이론을 볼때 퀵정렬 설명이랑 비슷해서 오... 하면서 보았다.
실4 문제를 풀어서 그런지 그렇게 어렵진 않았다.
하지만 난이도 있는 문제를 풀땐 어려울 거 같다.
N = int(input())
array = list(map(int,input().split()))
M = int(input())
search = list(map(int,input().split()))
array.sort() # 입력받은 배열을 오름차순으로 정렬해준다.
def bst(array,target,start,end):
if start>end: # 시작점이 끝점보다 클 경우
return None
mid = (start+end)//2
if array[mid] == target: # 찾고자하는 수가 가운데있는 수와 같을 경우
return array[mid]
elif array[mid]>target: # 찾고자하는 수가 가운데있는 수보다 작을경우
return bst(array,target,start,mid-1) # 가운데위치 보다 하나 아래 위치가 end가 되어 재귀로 실행
else:
return bst(array,target,mid+1,end) # 위와 반대로 가운데위치 보다 하나 위에 위치가 start가 되어 재귀로 실행
for i in range(M):
if bst(array,search[i],0,len(array)-1) == None:
print(0)
else:
print(1)
'Algorithm' 카테고리의 다른 글
| 백준 4963번(섬의 개수) 파이썬 (0) | 2023.01.30 |
|---|---|
| 백준 2805번(나무 자르기) 파이썬 (0) | 2023.01.29 |
| 백준 7576번(토마토) 파이썬 (0) | 2023.01.19 |
| 백준 1012번(유기농 배추) 파이썬 (0) | 2023.01.18 |
| 백준 1967번(숨바꼭질) 파이썬 (0) | 2023.01.16 |