-
[백준] 1920 - 수 찾기알고리즘 2023. 4. 9. 17:41728x90
1. 문제
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
2. 접근
1. 기본적으로 이 문제는 정렬을 통해서 ( not in ) 으로 풀 수 있을거 같지만, 이분탐색으로 풀어보겠다 ( 비슷한 문제가 이코테에 실려있어서 이분탐색도 가능함을 알 수 있었다 )
2. 주워지는 리스트는 정렬을 통해 이분탐색의 조건을 갖춰준다
3. 우리가 암기하고 있는 이분탐색의 코드를 작성하고, 값들을 for문을 통해 m개의 값들 ( 여기서는 find 라는 리스트안의 값들 )을 하나씩 함수를 돌려 값이 존재하는지 하지 않는지를 찾는다
3. 풀이
import sys input = sys.stdin.readline n = int(input()) a = list(map(int,input().split())) a.sort() m = int(input()) find = list(map(int,input().split())) def binary(arr,target,start,end): while start <= end: mid = (start + end) // 2 if arr[mid] == target: return target elif arr[mid] > target: end = mid - 1 else: start = mid + 1 return None for i in find: res = binary(a,i,0,n-1) if res != None: print(1) else: print(0)
'알고리즘' 카테고리의 다른 글
[백준] 2417 - 정수 제곱근 (0) 2023.04.09 [백준] 1654 - 랜선 자르기 (0) 2023.04.09 [백준] 1431 - 시리얼 번호 (0) 2023.04.07 [백준] 1302 - 베스트 셀러 (0) 2023.04.07 [백준] 1059. 좋은구간 (0) 2023.04.07