BOJ 10816. 숫자 카드 2 (Python)

2021. 2. 16. 15:46Problem Solving/BOJ

BOJ 10816. 숫자 카드 2

10816번: 숫자 카드 2 (acmicpc.net)

 

10816번: 숫자 카드 2

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

www.acmicpc.net

풀이

  1. N개의 숫자카드 리스트에서 각 카드가 몇 장 있는지 알아내기 위해서 collections 모듈의 defaultdict 을 사용해 각 카드에 적인 정수를 키, 카드의 갯수를 값으로 설정한 딕셔너리를 생성했다.
cards_dict = defaultdict(int)
for n in cards_list:
    cards_dict[n] += 1

 

int로 초기화 하면 기본값이 0이 되므로 카드가 딕셔너리에 있을때, 없을때 if문으로 구분 할 필요가 없어서 간단하다.

해당 카드가 등장하면 카드의 정수를 키로 가진 값을 +=1 해준다.

 

  1. 마지막으론 포문을 돌며 딕셔너리의 값만 출력해주면 된다. 없으면 0이 출력된다.

소스코드

from sys import stdin
from collections import defaultdict

N = int(input())
cards_list = map(int,stdin.readline().split())
cards_dict = defaultdict(int)
for n in cards_list:
    cards_dict[n] += 1

M = int(input())
nums = map(int,stdin.readline().split())

for n in nums:
    print(cards_dict[n], end=" ")

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

BOJ 11866. 요세푸스 문제 0 (Python)  (0) 2021.02.17
BOJ 10828. 스택 (Python)  (0) 2021.02.16
BOJ 9012. 괄호 (Python)  (0) 2021.02.16
BOJ 1978. 소수 찾기 (Python)  (0) 2021.02.15
BOJ 1920. 수 찾기 (Python)  (0) 2021.02.15