-
[백준] 1920번 수찾기Algorithm Study/Python 2021. 5. 23. 23:24
https://www.acmicpc.net/problem/1920
문제
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안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.
출력
M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.
풀이
10만 개의 값을 10만 번 순차탐색을 하게되면 최대 10억의 연산이 필요하기 때문에 2초안에 끝날 수 없다.
정렬을 한 뒤 이분탐색을 이용하여 nlogn으로 풀거나 set과 같은 자료형을 이용하여 O(1)로 찾을 수 있게
구현하여야 한다.전체 코드
import sys N = int(sys.stdin.readline().strip()) num_set = set(map(int, sys.stdin.readline().split())) M = int(sys.stdin.readline().strip()) find_list = list(map(int, sys.stdin.readline().split())) for i in find_list: if i in num_set: print(1) else: print(0)
나는 set자료 구조를 이용하여 구현하였다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준] 1406번 에디터 (0) 2021.05.24 [백준] 10989번 수 정렬하기 3 (0) 2021.05.24 [백준] 1182번 부분수열의 합 (0) 2021.05.20 [백준] 3055번 탈출 (0) 2021.05.20 [프로그래머스] 월간 코드 챌린지 시즌2 5월. 110 옮기기 (0) 2021.05.19