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 구조를 사용해야 한다.
또한 문제에서 의도한 풀이는 이분탐색이지만 이 문제에서 이분탐색을 사용하는 것은 조금 억지인 것 같아 다음에 이분탐색 문제가 나왔을 때 자세히 살펴보겠다.
'백준' 카테고리의 다른 글
[백준] 10845번 파이썬 (큐) (0) | 2024.03.21 |
---|---|
[백준] 10828번 파이썬 (스택) (0) | 2024.03.21 |
[백준] 10773번 파이썬 (제로) (0) | 2024.03.20 |
[백준] 9012번 파이썬 (괄호) (0) | 2024.03.20 |
[백준] 4949번 파이썬 (균형잡힌 세상) (0) | 2024.03.20 |