[PY] 1920 : 수 찾기

 

https://www.acmicpc.net/problem/1920

이분 탐색을 아느냐 정도로만 묻는 간단한 문제다.
내가 앞에서 적은 글 중 이분 탐색을 다루는 내용이 있다 : https://hyeonistic.tistory.com/22

 

이분 탐색 (Binary Search)

이분 탐색에 대해 논해보자. 둘로 나눠서 검색을 시도하는 이 내용은 n고개 게임에서 쉽게 찾을 수 있다.생각하는 숫자를 n고개 안에 맞추는 게임은 숫자를 제시하면 업, 다운을 제시해서 범위를

hyeonistic.tistory.com

어느 배열을 대상으로 검색해야 할지 다소 혼란스러웠지만 큰 문제는 아니었다.

import sys

def func(arr, target, str, end):
    if(str > end):
        return 0

    if(str == end):
        if(target != arr[str]):
            return 0
        else:
            return 1
        
    mid = (str + end) // 2

    if arr[mid] == target:
        return 1
    elif arr[mid] > target:
        return  func(arr, target, str, mid - 1)
    elif arr[mid] < target:
        return func(arr, target, mid + 1, end)
# 찾으면 1, 못찾으면 0을 반환해야하는 문제 상황을 반영했다.

n = int(sys.stdin.readline())
listN = list(map(int, sys.stdin.readline().strip().split()))[:n]

m = int(sys.stdin.readline())
listM = list(map(int, sys.stdin.readline().strip().split()))[:m]


listN.sort()

for i in range (len(listM)):
    print(str(func(listN, listM[i], 0, len(listN) - 1)))

 

'문제풀이' 카테고리의 다른 글

[PY] : 2630 색종이 만들기  (0) 2025.03.22
[PY] 2805 : 나무 자르기  (0) 2025.03.21
[PY] 1914 : 하노이 탑  (0) 2025.03.20
[PY] 9663 : N-Queen  (2) 2025.03.20
[PY] 9020 : 골드바흐의 추측  (0) 2025.03.20