이진탐색(2)
-
BOJ 1764. 듣보잡 (Python)
BOJ 1764. 듣보잡 1764번: 듣보잡 (acmicpc.net) 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 풀이 파이썬의 x in y를 이용해서 풀었더니 시간 초과가 났다. N과 M이 500,000 이하의 큰 수라 연산하는 것이 오래걸리나 싶어서 탐색을 이진탐색 으로 바꾸어 풀었다. 이진탐색(binary seart)는 O(NlogN) 파이썬 내장함수 sort()는 O(logN)이므로 이진탐색이 더 좋다. def binary_search(start, end, list, target, result):..
2021.02.19 -
BOJ 1920. 수 찾기 (Python)
BOJ 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 풀이 이진 탐색(Binary Search) 으로 풀었다. 이진탐색의 원리는 이러하다. 탐색하고자 하는 리스트를 오름차순으로 정리한다. target < 중앙값 이면 target은 중앙값의 왼쪽에 있으므로 end(index)를 중앙값index - 1 로 설정하고 중앙값의 오른쪽은 버린다. 중앙값 < target 이면 targe..
2021.02.15