백준 | 숫자 카드 2

jeonghens·2025년 2월 13일

알고리즘: BOJ

목록 보기
123/125

백준 숫자 카드 2


# 풀이 (1): 딕셔너리 활용


import sys

n = int(sys.stdin.readline().strip())
cards = list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline().strip())
targets = list(map(int, sys.stdin.readline().split()))

dict_cards = {}
for card in cards:
    if card in dict_cards:
        dict_cards[card] += 1
    else:
        dict_cards[card] = 1

for target in targets:
    if target in dict_cards:
        print(dict_cards[target], end=" ")
    else:
        print(0, end=" ")

딕셔너리의 get()를 활용하면, 위의 코드를 더 간결하게 만들 수 있다.

# 풀이 (2): 딕셔너리의 get() 활용


import sys

n = int(sys.stdin.readline().strip())
cards = list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline().strip())
targets = list(map(int, sys.stdin.readline().split()))

dict_cards = {}
for card in cards:
    dict_cards[card] = dict_cards.get(card, 0) + 1

for target in targets:
    print(dict_cards.get(target, 0), end=" ")

여기서.. collections의 Counter 클래스까지 활용하면, 코드가 더 간결해진다.

# 풀이 (3): Counter 클래스 활용


import sys
from collections import Counter

n = int(sys.stdin.readline().strip())
cards = list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline().strip())
targets = list(map(int, sys.stdin.readline().split()))

dict_cards = dict(Counter(cards))
for target in targets:
    print(dict_cards.get(target, 0), end=" ")
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글