개수 세기 유형
존재 여부 유형
def solution(participant, completion):
d = {}
# 참가자 수 세기
for name in participant:
d[name] = d.get(name, 0) + 1 # key가 없다고 하더라도 에러없이 default r값으로 dict 생성
# name:숫자
# 완주자 수 빼기
for name in completion:
d[name] -= 1
# 참가를 했다면 기본적으로 1, 완주하면 -1 되어 0이 됨
# 남은 사람 찾기
for name in d:
if d[name] > 0: # 완주했다면 0이 되었을테니, 0이상인 값의 key returb
return name
def solution(nums):
# '종류:마리수' 느낌으로 dict 생성
mon_nums = len(nums)
d = {}
# 해시테이블 생성
for mon in nums:
d[mon] = d.get(mon,0)+1 # 개체 유형별로 몇마리인지 정리
# 전체 유형 수
mon_type = len(set(nums))
# 전체 유형수가 절반보다 많으면 절반이 유형의 최대값
# 적으면 그때의 유형의 개수가 최대값
if mon_type < (mon_nums / 2):
return mon_type
else:
return mon_nums / 2
def solution(phone_book):
# 리스트를 정렬하면 접두어 바로 뒤에 해당되는 접두어를 가진 요소가 붙게됨 => 핵심!
phone_book.sort()
for i in range(len(phone_book) - 1):
# 접두어로 시작하는지 확인하기 위한 메서드
if phone_book[i+1].startswith(phone_book[i]):
return False
return True
def solution(clothes):
closet = {}
for _, category in clothes:
# 어떤 옷인지는 이 문제에서 중요하지 않음 => 카운팅만 해주면 된다.
closet[category] = closet.get(category, 0) + 1
# 딕셔너리 key 값별로 value의 길이를 구하고 각각 +1 해주고, 최종 값에서 아무것도 안입는 경우 1을 빼주면 결과값
answer = 1
for k, v in closet.items(): # 딕셔너리 요소별로 키와 값 가져오기
v = v + 1
answer *= v
answer -= 1
return answer