백준, 수 찾기, 1920
2024. 9. 4. 00:54ㆍETC/Algorithm
[유형]
이분탐색
[문제링크]
https://www.acmicpc.net/problem/1920
[요약]
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다.
[문제풀이]
이분탐색이지만, set을 사용해서 문제를 해결할 수 있다.
A를 set으로 만들어 탐색을 진행한다.
import sys
def input():
return sys.stdin.readline().rstrip()
N = int(input())
list_N = set(map(int,input().split()))
M = int(input())
list_M = list(map(int,input().split()))
for m in list_M:
if m in list_N:
print("1")
else:
print("0")
문제의 의도대로, 이진탐색으로 문제를 해결할 수 있다.
이 때, list_N의 sort해야한다.
import sys
def input():
return sys.stdin.readline().rstrip()
N = int(input())
list_N = list(map(int,input().split()))
M = int(input())
list_M = list(map(int,input().split()))
list_N.sort()
for m in list_M:
left, right = 0, N-1
flag = 0
while left <= right:
mid = (left+right)//2
if m == list_N[mid]:
flag = 1
print(1)
break
elif m > list_N[mid]:
left = mid+1
else:
right = mid-1
if flag == 0:
print(0)
'ETC > Algorithm' 카테고리의 다른 글
백준, 숫자 카드2, 10816 (0) | 2024.09.04 |
---|---|
백준, 듣보잡, 1764 (0) | 2024.09.04 |
프로그래머스, [3차] 파일명 정렬, 17686 (0) | 2024.09.03 |
백준, 좌표 정렬하기2, 11651 (0) | 2024.09.03 |
백준, 나이순 정렬, 10814 (0) | 2024.09.03 |