[Python]BaekJoon.AC

[Python]백준 BaekJoon.AC 1920 : 수 찾기(이분탐색)

스뇨잉 2022. 1. 19. 03:49
728x90
728x90

 

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

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

 

 

가볍게 함정에 빠져 이분탐색 문제임을 확인해주고..!

오랜만에 하려니 여러 시행착오를 겪으며 드문드문 천천히 작성해갔다.

세세한 디테일을 단번에 구현하기란 어렵다.

이분탐색 구조를 외우면 쉬운데 안외우고 원리를 기억해 가끔 작성하려니 힘들다ㅎㅎ

 

프로그램 저장위치 바꿔줬더니 오류 떠서 해결하는 데도 애먹었다..

아이클라우드 위치를 탐색하지 못하다니..! 결국 탐색하기 쉬운 데스크탑으로 또 옮겨줬다. 떠먹여줘야 찾아내는 파이참

(휴식 끝.. 다시 시작!)

 

 

import sys

N = int(input())
A = list(map(int, sys.stdin.readline().split()))
A.sort()

M = int(input())
X = map(int, sys.stdin.readline().split())

for x in X:
    sta = 0
    fin = N-1
    num = N // 2
    while True:
        num = (sta + fin) // 2
        if A[num] == x:
            print(1)
            break
        elif A[num] < x:
            sta = num + 1
        elif A[num] > x:
            fin = num - 1

        if sta > fin :
            print(0)
            break

 

728x90
728x90