백준 1920 파이썬 이진 탐색 O(nlogn) 시간 복잡도
2024. 5. 19. 06:54ㆍ코딩 도구/백준
반응형
백준 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
답안 코드 :
N = int(input())
A = list(map(int, input().split()))
A.sort()
M = int(input())
target_list = list(map(int, input().split()))
for i in range(M):
find = False
target = target_list[i]
# 이진탐색 시작
start = 0
end = len(A) - 1
while start <= end:
midi = int((start + end) / 2)
midv = A[midi]
if midv > target:
end = midi - 1
elif midv < target:
start = midi + 1
else:
find = True
break
if find:
print(1)
else:
print(0)
생각 :
# 문제 분석
# N의 최대 범위가 100,000 -? 단순 반복문으로 불가
# 이진 탐색 -> O(nlogn) 시간 복잡도로 해결
# 기본 정렬도 풀 수 있을 듯 근데 이진탐색 연습해볼래
# 문제 풀이
# 탐색 데이터를 1차원 리스트에 저장 후 정렬
# X라는 정수 존재를 이진 탐색을 사용
# if 중앙값 > target:
# 종료 인덱스 = 중간 인덱스 - 1
# elif 중앙값 < target:
# 시작 인덱스 = 중간 인덱스 + 1
# else:
# 찾았음, 반복문 종료
탐색 알고리즘 정리 블로그
탐색 알고리즘 정리
탐색 탐색은 주어진 데이터에서 자신이 원하는 데이터를 찾아내는 알고리즘을 말한다. 주어진 데이터의 성질(정렬 데이터 또는 비정렬 데이터)에 따라 적절한 탐색 알고리즘을 선택하는 것이
mkisos.tistory.com
반응형
'코딩 도구 > 백준' 카테고리의 다른 글
백준 1300 파이썬 시간 복잡도 N^2인 알고리즘 불가 (13) | 2024.05.21 |
---|---|
백준 2343 파이썬 블루레이 (1) | 2024.05.20 |
백준 1167 파이썬 가장 긴 경로를 찾는 방법 관련 아이디어 (28) | 2024.05.18 |
백준 1260 파이썬 DFS와 BFS를 구현할 수 있는가 (25) | 2024.05.16 |
백준 13023 파이썬 DFS의 시간 복잡도 O(V+E) (1) | 2024.05.15 |