DevLog:-)

[알고리즘][파이썬]1920-수찾기 본문

알고리즘/백준

[알고리즘][파이썬]1920-수찾기

hyeon200 2023. 5. 14. 00:04
반응형

 

문제

코드

1.이분탐색을 이용한 코드

import sys
import sys

n = int(input())
a = list(map(int,sys.stdin.readline().split()))
m = int(input())
b = list(map(int,sys.stdin.readline().split()))

a.sort()


for i in b:
    s = 0
    e = n-1
    f = 0
    while(s<=e):
        M = (s+e)//2
        if(a[M]<i):
            s = M+1
        elif(a[M]>i):
            e = M-1
        else:
            f = 1
            print(1)
            break
    if(f == 0):
        print(0)

이분탐색

1.sort함수를 이용하여 오름차순으로 정렬한다.

2.start, end를 두고 그 가운데 값을 기준으로 탐색을 진행한다.

3.-(중심값<목표값) -> (start = 중심값+1) 변경

   -(중심값>목표값) -> (end = 중심값-1) 변경

 

4.찾으면 1을, 못찾고 while문이 끝나면 0을출력한다.

     (while문의 종료조건은 start>end일 때이다.)


 

2.딕셔너리를 이용한 코드

import sys

n = int(input())
a = list(map(int,sys.stdin.readline().split()))
m = int(input())
b = list(map(int,sys.stdin.readline().split()))

map = {}  #딕셔너리 선언
for i in a:
    map[i] = 0  #딕셔너리에 데이터 저장

for i in b: 
    if(i in map):   #목표값 있는지 확인
        print(1)
    else:
        print(0)

 

반응형