본문 바로가기
백준

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

by 헤이즐넛 좋아하는 개발자 2024. 3. 21.

1. 문제와 예제

문제
예제

각 숫자의 개수를 세는 문제이므로 dict 구조를 사용하면 되겠다.


2. 전체 코드

# 입력 받기
N = int(input())
N_lst = list(map(int, input().split()))
dct = {}

# {'카드의 숫자': '숫자의 개수'}로 이루어진 dict 만듦
for i in N_lst:
    if i in dct:
        dct[i] += 1
    else:
        dct[i] = 1

M = int(input())
M_lst = list(map(int, input().split()))

for i in M_lst:
    if i in dct: # 주어진 수의 숫자 카드가 존재하는 경우
        print(dct[i], end=" ")
    else: # 존재하지 않는 경우
        print("0", end=" ")

3. 풀이

어차피 각 숫자의 개수를 세야 하는 문제이므로 시간을 많이 잡아먹는 list에서의 count가 아닌 dict 구조를 사용해야 한다.

또한 문제에서 의도한 풀이는 이분탐색이지만 이 문제에서 이분탐색을 사용하는 것은 조금 억지인 것 같아 다음에 이분탐색 문제가 나왔을 때 자세히 살펴보겠다.