딕셔너리 사용 풀이
from collections import defaultdict
int(input())
num = list(map(int,input().split()))
int(input())
num2 = list(map(int,input().split()))
res = defaultdict(int)
for n in num:
res[n] += 1
for x in num2:
if x in res:
print(res[x], end=" ")
else:
print(0, end=" ")
- defaultdict를 사용한 이유는 for문을 사용할 때 특정 키에 값을 += 1해주는 작업을 위해서다.
- 이때 그냥 딕셔너리를 쓰게 된다면?
- if not n in res:
res[n] = 0
res[n] += 1 - 위와 같이 여러줄의 코드를 넣어서 사용해야 한다!
- defaultdict는 값을 전부 0으로 초기화 해준다!
- 해당 숫자를 key로 해당 숫자의 갯수를 value로 defaultdict에 담아 준다.
- num2를 돌며 해당 값이 defaultdict에 있으면 해당 값(= 몇개인지 카운팅 한 수)을 출력해주고 그러히 않으면 0을 출력해준다.
dict를 사용한 풀이
from collections import defaultdict
int(input())
num = list(map(int,input().split()))
int(input())
num2 = list(map(int,input().split()))
res = {}
for n in num:
if not n in res:
res[n] = 0
res[n] += 1
for x in num2:
if x in res:
print(res[x], end=" ")
else:
print(0, end=" ")
딕셔너리 enumerate
- 딕셔너리
- 딕셔너리는 원하는 타입의 키에 값을 넣어 사용하는 방식 a = {}로 선언하거나 a = dict()로 선언한다.
- 이때 해당하는 키의 값의 체크가 목적이 아닌 누적이 목적이라면 defaultdict 사용을 권한다.
- 딕셔너리를 반복문에서 사용할 때 key, value 두개로 접근하기 위해서는 딕셔너리명.items()를 사용해야 한다.
- enumerate
- 이 경우엔 넣은 리스트의 index를 부여하고 싶을 때 사용한다.
https://adervise1.tistory.com/100
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][파이썬] - 1764. 듣보잡(파이썬/python) (0) | 2022.07.20 |
---|---|
[백준][파이썬] - 1269. 대칭 차집합(파이썬/python) (0) | 2022.07.20 |
[백준][파이썬] - 2480. 주사위 세개(파이썬/python) (0) | 2022.07.20 |
[백준][파이썬] - 14425. 문자열 집합(파이썬/python) (0) | 2022.07.20 |
[백준][파이썬] - 13417. 카드 문자열(파이썬/python) (0) | 2022.07.18 |