[백준] 하루5문제(25.02.19)

HAHAHELLO·2025년 2월 19일

파이썬

목록 보기
22/50

집합과 맵

10816: 숫자 카드2

문제

예제

나의 풀이

import sys
input = sys.stdin.readline
n = int(input())
cards = list(map(int, input().split()))
m = int(input())
other = list(map(int, input().split()))

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

for card in other:
    print(card_count.get(card, 0), end = ' ')

-card_count.get(card,0): card_count 딕셔너리에서 card가 없으면 0, card가 있으면 card를 반환한다.

끄적끄적

set과 list의 시간 복잡도 비교

동일한 원소의 포함 여부를 확인할 때 set은 해시 테이블(해시 맵) 기반이므로 매우 빠른 검색 성능O(1)을 보이지만, list는 원소를 처음부터 끝까지 순회해야 하므로 시간 복잡도가 O(n)으로 더 느리다. 이 점 때문에, 검색이나 중복 제거와 같은 작업에서는 set을 사용하는 것이 유리하다

get()

dict.get(key, default)의 형태로 사용되며 key가 있으면 key를 반환하고 없으면 default값을 기본값으로 반환한다.

isdigit()

문자열의 문자가 비어있지 않고 모두 숫자로 이루어졌는지 판별한다.

isalpha()

문자열의 문자가 비어있지 않고 모두 알파벳으로만 이루어졌는지 판별한다.

profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글