A[1], A[2], …, A[N]
이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.A[1], A[2], …, A[N]
이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.# input 값
N = 5
N_list = [4, 1, 5, 2, 3]
M = 5
M_list = [1, 3, 7, 9, 5]
N = int(input())
N_list = list(map(int, input().split()))
M = int(input())
M_list = list(map(int, input().split()))
for item in M_list:
if item in N_list:
print(1)
else:
print(0)
"""
1
1
0
0
1
이 출력된다.
"""
이 코드는 두 개의 리스트(N_list와 M_list)를 비교하여 M_list에 있는 각 요소가 N_list에 포함되어 있으면 1을, 포함되어 있지 않으면 0을 출력한다.
코드의 작동 단계는 다음과 같다.
# input 값
N = 5
N_list = [4, 1, 5, 2, 3]
M = 5
M_list = [1, 3, 7, 9, 5]
N_list.sort()
def binary_search(data, search):
if len(data) == 0:
return 0
elif len(data) == 1:
if data[0] == search:
return 1
else:
return 0
medium = len(data) // 2
if search == data[medium]:
return 1
else:
if search > data[medium]:
return binary_search(data[medium+1:], search)
else:
return binary_search(data[:medium], search)
for item in M_list:
print(binary_search(N_list, item))
이 코드는 이진 탐색 (Binary Search) 방법을 이용하여 주어진 리스트(N_list)에서 특정 원소(item in M_list)가 존재하는지를 찾아내는 것이다.
코드의 흐름은 다음과 같다.
이진 탐색 함수의 작동 방식
마지막으로, 각 item in M_list에 대해 이진 탐색 함수를 호출하여 결과(1 또는 0)를 출력한다. 여기서 1은 해당 원소가 N_list에 존재함을, 0은 존재하지 않음을 나타낸다.