1. 아이디어
▪ N개의 정수 정렬
▪ for문 돌면서 이진탐색 M번 수행
▪ 이진탐색
- 존재하면 1 출력
- 존재하지 않으면 0 출력
2. 시간복잡도
▪ N개 입력값 정렬 = O(NlogN)
▪ M개를 N개 중에서 탐색 = O(MlogN)
▪ O(NlogN+MlogN) = O(N+M(logN)) = O(2e5*log2e5) = O(4e6)
3. 변수
▪ 자연수 배열: int[]
▪ 찾는 수 배열: int[]
Code
import sys
input = sys.stdin.readline
N = int(input())
nums = list(map(int,input().split()))
M = int(input())
find_nums = list(map(int,input().split()))
nums.sort()
def bis(start,end,num):
if start == end:
if nums[start] == num:
print(1)
else:
print(0)
return
mid = (start+end)//2
if nums[mid] < num:
bis(mid+1, end, num)
else:
bis(start, mid, num)
for num in find_nums:
bis(0,N-1,num)
1920번: 수 찾기
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들
www.acmicpc.net
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 백준 11726번: 2×n 타일링 (0) | 2024.03.08 |
---|---|
[코딩테스트] 백준 11047번: 동전 0 (0) | 2024.03.08 |
[코딩테스트] 백준 2559번: 수열 (0) | 2024.03.08 |
[코딩테스트] 백준 14503번: 로봇 청소기 (1) | 2024.03.08 |
[코딩테스트] 백준 15649번: N과 M (1) (0) | 2024.03.08 |