BOJ 10816. 숫자 카드 2 (Python)
2021. 2. 16. 15:46ㆍProblem Solving/BOJ
BOJ 10816. 숫자 카드 2
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
풀이
- N개의 숫자카드 리스트에서 각 카드가 몇 장 있는지 알아내기 위해서
collections
모듈의defaultdict
을 사용해 각 카드에 적인 정수를 키, 카드의 갯수를 값으로 설정한 딕셔너리를 생성했다.
cards_dict = defaultdict(int) for n in cards_list: cards_dict[n] += 1
int
로 초기화 하면 기본값이 0이 되므로 카드가 딕셔너리에 있을때, 없을때 if문으로 구분 할 필요가 없어서 간단하다.
해당 카드가 등장하면 카드의 정수를 키로 가진 값을 +=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 |