본문 바로가기

백준

[백준] 10815번 - 숫자 카드 (파이썬)

반응형

1. 문제

2. 코드

num = [0 for _ in range(20000000)]

n = int(input())
n_list = list(map(int, input().split()))
for i in n_list:
    num[i+10000000] = 1
    
m = int(input())
m_list = list(map(int, input().split()))
for i in m_list:
    print(num[i+10000000], end = ' ')

 

3. 설명

주요 포인트는 -10000000 ~ 10000000까지의 숫자 범위이므로 총 20000000칸의 list를 만들어서 계산한다.

무슨 말인지 모르겠다면 아래의 예시를 보자.

 

즉 input이 5개 숫자이고, 5, 8, 9, -10, 10이라면

num[10000005] (5 + 10000000), num[10000008] (8+10000000), num[10000009] (9+10000000), num[9999990] (-10 + 10000000), num[10000010] (10 + 10000000) 을 1로 만들어주고,

 

다음으로 테스트할 숫자가 3개, 5, 3, 100이라면

num[10000005] (5 + 10000000), num[10000003] (3 + 10000000),  num[10000100] (100 + 10000000)이 각각 1인지, 0인지 확인하면된다.

1이라면 이미 상근이가 가지고 있는 숫자카드인 것이고, 0이라면 가지고 있지 않은 것이다.

728x90
반응형