반응형

수 찾기

티어 : Silver 4
시간 제한 : 1 초
메모리 제한 : 128 MB
알고리즘 분류 : 자료 구조, 이분 탐색, 트리를 사용한 집합과 맵

 

문제

N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.

 

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 \(-2^31\) 보다 크거나 같고 \(2^31\)보다 작다.

 

출력

M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.

 

예제 입출력


Algorithm

1. bisect 사용
2. A List sort
3. bisect_left와 bisect_right의 값을 비교해 같으면 0, 다르면 1 출력

 

Code

import sys
from bisect import bisect_left, bisect_right

input = sys.stdin.readline

# 입력
N = int(input())
A = list(map(int, input().split()))
M = int(input())
B = list(map(int, input().split()))

# A 정렬
A.sort()
for i in B:
    left = bisect_left(A, i)
    right = bisect_right(A, i)
    
    # left와 right의 값이 다르면 존재한다는 의미 -> 1 출력
    if left != right:
        print(1)
    else: # 값이 같으면 존재하지 않는다는 의미 -> 0 출력
        print(0)

메모리: 48360 KB
시간: 308 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 2512] 예산 Python  (0) 2022.03.08
[백준 2776] 암기왕 Python  (1) 2022.03.08
[백준 10828] 스택 Python  (0) 2022.03.06
[백준 1010] 다리 놓기 Python  (0) 2022.03.06
[백준 1037] 약수 Python  (0) 2022.03.06

+ Recent posts