Algorithm/Problems

[백준/파이썬] 10816번 숫자 카드2

공부좀하시졍 2022. 11. 18. 13:59

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

 

10816번: 숫자 카드 2

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

www.acmicpc.net

import sys

read = sys.stdin.readline
        
n = int(input())
cards = list(map(int, read().split()))
m = int(input())
nums = list(map(int, read().split()))

count = {}
for card in cards:
  if card in count:
    count[card] += 1
  else:
    count[card] = 1

for num in nums:
  result = count.get(num)
  if result == None:
    print(0, end=' ')
  else:
    print(result, end=' ')

의외로 간단한 문제였는데, 어렵게 생각했던 것 같다..

count라는 딕셔너리에 cards에 있는 값들을 key로 두고 cards에 있는 값의 갯수를 value로 설정한다.

이후 nums 리스트에 있는 값을 key로 한 값을 count에서 가져와 None이라면 cards와 겹치는 수가 아니므로 0을 출력하고 그렇지 않을경우 value값(개수)을 출력한다.