백준 10815: 숫자카드 해설- python
프로그래밍/백준

백준 10815: 숫자카드 해설- python

728x90
반응형

✏️ 문제

 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

 

✏️ 풀이

1920 수찾기 문제와 완전하게 동일한 문제였다. 해당 문제의 해설과 이진탐색에 대한 설명은 여기를 참고

 

(Python)

N=int(input())
card=list(map(int,input().split()))
card=sorted(card)
M=int(input())
target_list=list(map(int,input().split()))

def BS(array, target, start, end):
  if start > end:
    return 0
  mid=(start+end)//2
  if array[mid]==target:
    return 1
  elif array[mid]>target:
    return BS(array, target, start, mid-1)
  else:
    return BS(array, target, mid+1, end)

for target in target_list:
  print(BS(card, target, 0, N-1), end=' ')

재귀형태로 이진탐색을 구현하고 target_list로 선언한 탐색대상의 요소들을 for문으로 뽑아내 BS함수에 넣어가며 리턴되는 값을 프린트했다.

728x90
반응형