반응형
문제유형
이분 탐색
풀이 방법 도출 과정
1. 어떤 수를 찾아내는 것이기 때문에 탐색 알고리즘을 쓰면 된다. 그중 이분 탐색을 쓰겠다.
2. left, right를 설정하고 mid는 right - left 의 절반값을 쓰면된다.
3. 이제 이분 탐색법을 사용하여 문제를 풀면 된다.
시간 복잡도
입력 처리: O(N)
정렬: O(N log N)
M번 이진 탐색 실행 O(M log N)
최종 시간 복잡도
O(N log N + M log N)
코드 및 간단설명
이분탐색을 사용하여 문제를 풀었다.
import sys
input = sys.stdin.readline
N = int(input())
A = list(map(int, input().split()))
A.sort()
M = int(input())
B = list(map(int, input().split()))
def binary_search(target):
left, right = 0, len(A) - 1 # A의 인덱스 범위 설정
while left <= right: # 올바른 while 조건
mid = (left + right) // 2 # 중간값 계산
if A[mid] < target:
left = mid + 1
elif A[mid] > target:
right = mid - 1
else:
return 1 # target을 찾았음
return 0 # target이 없음
for num in B:
print(binary_search(num))
반응형
'Coding Test (코딩 테스트)' 카테고리의 다른 글
[class1]백준 10870번(피보나치 수 5) - 코딩테스트 23일차(2025.02.13) (0) | 2025.02.13 |
---|---|
[class2]백준 1874번(스택 수열) - 코딩테스트 23일차(2025.02.13) (0) | 2025.02.13 |
[class2]백준 1654번(랜선 자르기) - 코딩테스트 22일차(2025.02.12) (0) | 2025.02.12 |
코딩테스트 21일차(2025.02.11) - 백준2108번(통계학) (0) | 2025.02.11 |
코딩테스트 20일차(2025.02.09) - 백준2839번(설탕 배달) (0) | 2025.02.09 |