1. 시간 초과

def iter_check(check_num, index, start, end):
    left_cnt = 0; right_cnt = 0
    left_index = 1; right_index = 1

    # 왼쪽에 숫자가 몇개 있는지
    while(start <= index - left_index):
        if(sorted_card_nums[index - left_index] == check_num):
            left_cnt += 1; left_index += 1
        else:
            break
            
    # 오른쪽에 숫자가 몇개 있는지    
    while(index + right_index <= end):
        if(sorted_card_nums[index + right_index] == check_num):
            right_cnt += 1; right_index += 1
        else:
            break
        
    # +1은 자기 자신을 의미함
    return left_cnt + right_cnt + 1

def solve(check_num, start, end):
    if(start > end):
        return 0
    
    index = (start + end) // 2
    
    # 이분 탐색
    if(sorted_card_nums[index] == check_num):
        return iter_check(check_num, index, start, end)
    elif(sorted_card_nums[index] > check_num):
        return solve(check_num, start, index - 1)
    else:
        return solve(check_num, index + 1, end)

import sys
input = sys.stdin.readline
    
N = int(input())
card_nums = list(map(int, input().split()))
sorted_card_nums = sorted(card_nums)

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

results = []
start = 0
end = len(sorted_card_nums) - 1
    
for target in target_list:
    results.append(solve(target, start, end))
    
print(*results)

2. 자주 쓰는 딕셔너리 방법
(검색해보니 이 방법이랑 Counter 모듈이 쓰이고 있음)

import sys
input = sys.stdin.readline
    
N = int(input())
card_nums = list(map(int, input().split()))

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

dicts = {}

for check_num in card_nums:
    if(check_num in dicts):
        dicts[check_num] += 1
    else:
        dicts[check_num] = 1
        
# ' '을 사이에 두고 반복하는 문자를 붙임
print(' '.join(str(dicts[target]) if target in dicts else '0' for target in target_list))

# ---------------------------------------
# result = ''

# for target in target_list:
#     if(target in dicts):
#         result += str(dicts[target])
#         result += ' '
#     else:
#         result += '0 '

# print(result[:-1])

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 2805번(python)  (0) 2020.07.27
백준 1654번(python)  (0) 2020.07.27
백준 1920번(python)  (0) 2020.07.19
백준 2261번(python)  (1) 2020.07.17
백준 6549번(python)  (0) 2020.07.13