본문 바로가기

Algorithm/Baekjoon

[Baekjoon] 백준 알고리즘(Python) 10815 - 숫자 카드

728x90

문제 10815

 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

 

 

이 문제를 풀기 위해 알아야 할 개념은 다음과 같습니다.

> set()

> 이진탐색

 

이 문제는 크게 두 가지 방법으로 풀 수 있습니다. set() 을 이용하여 풀거나 이진탐색을 이용하여 풀 수 있는데, set() 을 이용하는 것이 더 간단합니다.

 

1.  문제 풀이

이 문제를 set() 을 이용해서 풀 때 유의해야 할 점이 있습니다. 첫 번째로 받는 숫자들은 중복을 제거해도 상관 없지만, 두 번째로 받는 숫자들은 중복을 제거하면 안됩니다.

따라서 아래 코드처럼, str 은 set() 을 이용하여 집합으로 처리하고, str1 은 list() 를 이용하여 중복된 숫자들도 모두 받습니다. 리스트 str1 에 있는 원소가 집합 str 에 있는지 조건문을 통해 판단하여 있으면 1을 출력, 없으면 0을 출력하게 한다.

n = input()
str = set(map(int, input().split()))

m = input()
str1 = list(map(int, input().split()))
print(str1)
for i in str1:
    if i in str:
        print(1, end=' ')
    else:
        print(0, end=' ')

 

728x90