코딩테스트 준비 - 3

2022. 5. 20. 22:56프로그래밍 언어/코딩테스트준비

파이썬



추가문법 ( 딕셔너리 위주 )


collections 함수

  • collections 함수의 Counter 메소드
import collections 

participant = ["leo", "kiki", "eden"]
completion = ["eden", "kiki"]

adict = collections.Counter(participant)
# 결과 : 	Counter({'leo': 1, 'kiki': 1, 'eden': 1})

bdict = collections.Counter(completion)
# 결과 : Counter({'eden': 1, 'kiki': 1})
  • Counter 메소드에서 중요한 점은 연산이 가능하다는 것!
adict - bdict
# 결과 : Counter({'leo': 1})
  • Counter 연산 가능 다른 예제
a = Counter("aabasdxvdffass")
b = Counter("dasvdsfxddsfsa")

print(a) # Counter({'a': 4, 's': 3, 'd': 2, 'f': 2, 'b': 1, 'x': 1, 'v': 1})

print(b) # Counter({'d': 4, 's': 4, 'a': 2, 'f': 2, 'v': 1, 'x': 1})

print(a-b) # Counter({'a': 2, 'b': 1})

## 교집합 
print(a&b) # Counter({'s': 3, 'a': 2, 'd': 2, 'f': 2, 'x': 1, 'v': 1})

## 합집합
print(a|b) # Counter({'a': 4, 's': 4, 'd': 4, 'f': 2, 'b': 1, 'x': 1, 'v': 1})

## 반환 원하는 수
print(a.most_common(2)) # [('a', 4), ('s', 3)]

## value 의 숫자만큼 반환
print(list(a.elements())) # ['a', 'a', 'a', 'a', 'b', 's', 's', 's', 'd', 'd', 'x', 'v', 'f', 'f']

 

딕셔너리의 .get

  • [딕셔너리].get("찾을 키값", 없을때 리턴값)
# 코딩테스트 베스트앨범 문제

genres = ["classic", "pop", "classic", "classic", "pop"]
plays = [500, 600, 150, 800, 2500]

dic = {}
for i in range(len(genres)):
	dic[genres[i]]=dic.get(genres[i],0)+plays[i]
    
print(dic) # {'classic': 1450, 'pop': 3100}